懵逼树上懵逼果,懵逼树下你和我
第一题
[单选题]
A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:
1 2 3 |
A a0=new A(); A a1=new B(); A a2=new C(); |
以哪个说法是正确的
A第1行,第2行和第3行的声明都是正确的
B第1,2,3行都能通过编译,但第2,3行运行时出错
C第1,2行能通过编译,但第3行编译出错
D只有第1行能通过编译
首先看到这个题,本人的确是有点懵逼的,我想着这玩意是选c吧,第一行代码肯定没得问题
然后第二行不是一个上转型对象,也是可以操作的。第三行也太秀了趴,中间跨了一个类直接再来哥上转型,这玩意肯定是有问题的。果断选c,然而很显然,我错了,当然看了一眼答案
然后我看看别人的解析
多说不说,打开了自己的idea
按照要求来
public class A {
}
public class B extends A {
}
public class C extends B {
}
public class D {
public static void main(String[] args){
A a1=new A();
A a2=new B();
A a3=new C