【发布时间】:2014-09-08 12:41:57
【问题描述】:
class A {
}
class B extends A {
public static void main(String args[]) {
B b = new A();
}
}
为什么这会引发编译时错误?为了抑制编译时错误,我们可以执行B b=(B)new A();,但也可以通过ClassCastException。
【问题讨论】:
-
因为A的实例不是B
-
“通过编译时错误”还是“抛出编译时错误”?
-
b 是 B 的实例,而不是 A。它仅在您使用父类型变量并为其分配派生类型时才有效: A a = new B();这就是继承的工作原理。
标签: java