为什么java的子类中必须调用父类的构造方法。该如何解决
为什么java的子类中必须调用父类的构造方法。
为什么java的子类中必须调用父类的构造方法,能给一个逻辑清晰示例否?
------解决方案--------------------
子类继承父类的字段和方法。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
------解决方案--------------------
打个比喻吧。可能不是太恰当。
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
为什么java的子类中必须调用父类的构造方法,能给一个逻辑清晰示例否?
------解决方案--------------------
子类继承父类的字段和方法。
你想那么子类中从父类继承的字段,要谁来初始化呢?
父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
设计者,可能是这么考虑的。
再告诉你一个事,每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
所以说,为了那个内置的父类对象,也需要进行初始化。
------解决方案--------------------
打个比喻吧。可能不是太恰当。
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)
- Java code
Class A{ public A(){ System.out.println("A"); } } Class B extends A{ public B(){ System.out.println("B"); } } Class C extends B{ public C(){ System.out.println("C"); } public static void main(String[] args) { C c=new C(); } } //运行class C 会打印 A B C 。证明依次调用了 A B C的构造方法