簡體   English   中英

我們可以在Java多級繼承中從第二個子類調用超類構造函數嗎

[英]Can we call a super class constructor from 2nd sub class in multilevel inheritance in java

假設有三個類A,B和C。C擴展了B,B擴展了A。我們可以直接調用A類構造函數而不在子類C中調用B類構造函數嗎?

否。子類的構造函數將顯式或隱式調用其超類的構造函數之一來初始化自身。 無論這些類與要初始化的類之間的關系如何,都不能調用其他類的構造函數(初始化不同的對象除外)。

我認為那是不可能的。 無論如何,如果C與B不相關,而與A相關,為什么C首先擴展B?

您也可以嘗試在A中創建一些可以從A和C的構造函數調用的受保護方法。

如果您可以嘗試描述要建模的內容,則也許可以使用其他替代層次結構。

不,您不能,盡管子類的構造函數首先開始執行(在創建其對象時),但是在子類的構造函數中始終存在對super的no-arg構造函數調用(除非您手動使用參數調用super),因此上。 按照此層次結構,最頂層父類的構造函數雖然最后開始執行,但首先完成!

不是直接..但是可以這樣做:

public class A {
   A(){
   ....
   }
}

public class B extends A {
   B(){
   super();
   ....
   }
}

public class C extends B {
   C(){
   super();
   ....
   }
}

// In main()
C c = new C(); // This will eventually call A's constructor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM