为了账号安全,请及时绑定邮箱和手机立即绑定

父类和子类继承中方法调用的问题


请问在java入门第二季3-4,1分44秒

在测试类中只创建了子类对象,为什么在测试类里没有调用父类和子类中的方法,结果里面父类的Animal()方法和子类里面的Dog()方法执行了,而父类中同一级别的eat()没有执行?

而是eat()方法要在测试类中调用才能执行?

正在回答

2 回答

兄弟,才学编程不久吧。。。要想了解原理是需要自己去看书或者网上查资料的,废话不多说,解释如下:

    你说的Animal()和Dog()叫做午餐构造函数,Dog类是Animal的子类,在创建dog对象时候,系统会默认初始化,也就是调用类内的构造函数,如果你没有重写构造函数,系统会自动调用默认的无参构造函数进行对象的初始化,由于继承关系,会首先调用Animal(),再调用Dog(),这是构造函数的调用顺序,如果实在理解不了,你就可以想象一下,一个子类,继承了父类,子类里是要有父类的属性的,所以需要将父类继承的属性先初始化,再初始化自己的属性,已达到创建对象完整初始化的目的,如果还是不懂,就再看一遍视频,业精于勤。。。

    再说一下eat(),这个方法基于重写的普通方法,如果你自己不用父类的对象主动调用,子类的对象调用eat()的话,系统是不会像调用构造函数一样先调用父类的eat()的,这个就相当于你和你父亲,都需要吃饭,但是你父亲喜欢吃鱼,你喜欢吃肉一样,不能说你自己一个人吃饭,还得必须让你父亲先吃鱼的道理。。。

    纯手打,如果还有什么不懂,大家互相学习。。。

    

4 回复 有任何疑惑可以回复我~
#1

Pilipalaaaa 提问者

确实是刚开始学习不久,主要是理解构造方法和普通方法的区别,昨天查了一下,加上今天的解答,现在有点理解了,多谢解答
2017-12-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

父类和子类继承中方法调用的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信