【发布时间】:2014-08-07 22:04:03
【问题描述】:
我对 Java 语言中的类型转换有一个误解。问题是ClassCastException。例如,在这段代码中,假设 Animal 是 Dog 类的父类,
Animal 动物 = new Animal();
Dog dog = (Dog) 动物;
在执行后抛出 ClassCastException。 然而,在研究 android 包时,我发现了一个关于类型转换的示例,考虑到那个 java 示例,它应该抛出一个 ClassCastException。
EditText editText = (EditText) findViewById(R.id.edit_message);
在这段代码中,findViewById方法返回一个View类对象,它是EditText类的超类之一。(来自android.view.View 到 android.widget.EditText) 代码运行良好。谁能解释我是否犯了错误或这是怎么发生的?
提前致谢。
【问题讨论】:
-
如果您知道如何用
polymorphism标记这个问题,您就知道如何在此站点或其他地方搜索该概念。说真的,这太基础了。发帖前先搜索一下。 -
问题不在于多态机制,我知道这个例子确实包含多态性。真正的问题是关于 android 的实现。我知道为什么它给出了异常,我要求澄清 android 代码。
-
没有“Android 实现”。将对象视为其祖先父对象是多态性的核心,这是 OOP 的关键方面,因此也是 Java(以及 Android)的关键方面。我的评论试图告诉你,你发布这样一个基本问题的速度太快了,在 SO 或 Google 中执行简单搜索(或彻底阅读 developer.android.com)很容易回答这个问题
标签: java android types casting polymorphism