黑马程序员技术交流社区

标题: 求大神指教应该选哪个,为什么· [打印本页]

作者: 马庆伟    时间: 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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2