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

来源:9-4 Java 中的继承初始化顺序

Pilipalaaaa

2017-12-04 22:06


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

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

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

写回答 关注

1回答

  • 二是一种不三不亖的范儿
    2017-12-05 09:54:47
    已采纳

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

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

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

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

        

    Pilipa...

    确实是刚开始学习不久,主要是理解构造方法和普通方法的区别,昨天查了一下,加上今天的解答,现在有点理解了,多谢解答

    2017-12-05 10:02:39

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530643 学习 · 6091 问题

查看课程

相似问题