public class A {
public A() {
System.out.println("A");
}
}
public class B extends A{
public B() {
System.out.println("B");
}
}
public static void main(String[] args){
B b1 = new B();
輸出:
A
B
所以讓我感到困惑的是,Java 的繼承檔案指出:
建構式不是成員,所以不被子類繼承,但是子類可以呼叫超類的建構式。
根據我的理解,除非你super()在 B 類的建構式中特別呼叫,否則它不應該列印A。
那么問題來了,它為什么列印A呢?
uj5u.com熱心網友回復:
編譯器最初從子類建構式呼叫超類的默認建構式(無引數建構式)。所以你不需要明確地呼叫它。這就是上面列印該行的原因。
如果要呼叫超類的非默認建構式(帶引數的建構式),則必須從子類顯式呼叫它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/534945.html
標籤:爪哇哎呀遗产
