【发布时间】:2014-12-19 15:23:48
【问题描述】:
Object o = new Student(); // Implicit casting
我非常了解这段代码,我的理解是引用变量“o”指的是“Object”类型的数据,我们可以看到 Student 是从“Object”扩展而来的,这意味着它指的是学生。 如果我写了以下代码:
Object x = o;
这会将 o 中的值分配给 x ,这意味着如果我们遵循 x 的方向,我们将转到上面的那个学生对象!
我的问题是,为什么我不能写下面的代码? :
Student x = o;
“o”指的是“Object”类型的对象,该对象将其地址(在内存中)分配给“o”,为什么我们不能将保存在o中的值分配给x!
【问题讨论】:
-
这可能会产生非常困难的错误和神秘的代码。编译器也无法轻松处理此功能。这显然是可能的,所以我认为这是一个伟大的设计决策。
-
因为 Java 的设计者没有选择复制 Visual Basic。这是他们的口味问题。
标签: java object casting implicit