[英]Super constructor call
在Java中,如果我的類擴展了一個超類,並且默認情況下,構造函數的第一行是Super()
,那么超類的字段是否已初始化,或者僅構造函數在運行?
另外,如果超類中的構造函數調用了恰好在兩個類中的方法,那么它是否運行超類或子類版本?
初始化超類的字段,還是僅運行構造函數?
這是同一件事。 調用構造函數時,會發生以下事情:
java.lang.Object
,否則將調用超類構造函數。 { }
的實例變量聲明。 super()
調用之后的構造函數中的代碼將被執行。 您可以在調用super()
時通過遞歸看到,步驟(2)在步驟(3)之前。 因此,是的,實例變量已初始化,構造函數代碼已執行。
另外,如果超類中的構造函數調用了恰好在兩個類中的方法,那么它是否運行超類或子類版本?
子類版本。 請注意,這與C ++有所不同,在C ++中,對象被視為部分構造,與v-table,
因此將運行超類版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.