黑马程序员技术交流社区
标题:
继承 -构造函数的问题
[打印本页]
作者:
雯雯暖暖
时间:
2014-9-3 20:01
标题:
继承 -构造函数的问题
class Fu
{
Fu(){
show();
}
void show()
{
System.out.println("fu show");
}
}
class Zi extends Fu{
int num=8;
Zi(){
super();
}
void show()
{
System.out.println("zi show "+num);
}
}
复制代码
各位大神,为什么Zi z=new Zi();的结果是 zi show 0, 我的理解是fu show.求教!
作者:
xiayoutianxia
时间:
2014-9-3 20:23
你子类把父类的show方法覆盖了啊
作者:
她只是过客
时间:
2014-9-3 21:03
第一个问题,输出子类的show而不输出父类的show();父类里面的构造函数里,第一句是super(),也就是继承的Object,再下一句是显示初始化,而父类里面没有任何可显示初始化的成员变量,再下一句是show();,而子类的show()覆盖了父类的show();,在执行第四行的时候就直接执行子类的show();了,第二个问题,子类还没有显示初始化呢,所以num并没有值,而是默认的0.
作者:
范鹏霄
时间:
2014-9-3 21:09
本帖最后由 范鹏霄 于 2014-9-3 21:10 编辑
因为实例化子类调用的是父类的构造方法,super()就是调用父类构造方法
作者:
wenjd0000
时间:
2014-9-3 22:47
多态真乱 越看越不懂了
作者:
lq你微笑时好美
时间:
2014-9-3 23:53
这是方法重写啊,子类重写父类方法,所以输出zi show.还有就是父类没有成员变量,子类访问不到,输出默认值0
作者:
lq你微笑时好美
时间:
2014-9-3 23:56
简单易懂…多态真是绕的晕晕的
作者:
天邃任我桓
时间:
2014-9-4 21:37
new的是构造方法,子类复写父类构造方法,但开始是默认初始化没有显示初始化所以结果就是0
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2