标题: 求大神指教应该选哪个,为什么· [打印本页] 作者: 马庆伟 时间: 2016-6-12 09:23 标题: 求大神指教应该选哪个,为什么· 以下程序执行的结果是( ) ----- 单选
class Fu{
public int num = 10;
public Fu(){
System.out.println("fu");
}
}
class Zi extends Fu {
public int num = 20;
public Zi(){
System.out.println("zi");
}
public void show(){
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(super.num);
}
}
class Test1_Extends {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
A、zi zi 10 20 30
B、fu zi 30 20 10
C、fu fu 10 20 30
D、fu zi 10 10 30 作者: 暴雨 时间: 2016-6-12 17:16
BBBBBBBBBBB作者: zhoubinjian 时间: 2016-6-12 18:20
选B,z.show()时,子类先构造函数初始化,因为子类构造函数里第一行默认有super(),所以会先访问父类,所以就 有了Fu,Zi; print(num),是打印函数里的num,30,因为没有被调用,print(this.num);this代表的是zi这个对象,所以是打印zi这个对象的成员变量num,20; print(super.num)是父类在调用,输出的是父类的成员变量num,10