打个比喻吧。可能不是太恰当。 你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)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的构造方法
我也是刚刚初学J2SE这个问题我也问过我自己。
你要造一个儿子出来,但这个儿子不能凭空出现,他需要父亲才能生出来,这个时候就要先创造一个父亲。而构造方法就是造人的,所以先造一个父亲,再才能造一个儿子。所以先调用父类构造方法,再调用子类构造方法。(当然,如果父亲上面还有父类,就继续往上调用)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的构造方法