PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 你get了
作者回复: new操作符是创建对象。构造方法是初始化对象。子类的对象内含了一个父类的对象,这个父类的对象也要初始化,就靠调用父类对应的构造方法。 所以子类的构造方法肯定会调用一下父类的构造方法,无论是隐含的调用,还是super()显示的调用。 你的理解是对的,但是有一个地方有点误解,就是创建对象不是通过构造方法,而是通过new 表达式。构造方法是初始化一个已经创造出来的对象。因为new表达式一出,后面必然会紧跟着调用构造方法,这俩总是一起的,所以容易混淆。 悄悄告诉你,我开始学的时候,也认为对象是通过构造方法创建出来的。
作者回复: protected也可以
作者回复: 🉑️
作者回复: 如果没有明确的调用有参数的构造方法,那就会调用无参数的构造方法。子类的构造方法也一样的必须调用父类的一个构造方法
作者回复: 子类构造方法一定要调用一个父类的构造方法。不写就是调用无参数的那个
作者回复: 1)是 2)是 👍
作者回复: B继承A,那么B中的构造方法名字必须是B,A中的构造方法名字必须是A