網(wǎng)站怎么增加流量如何優(yōu)化網(wǎng)站快速排名
在 Java 中,子類的構(gòu)造器是否需要顯式調(diào)用 super
取決于父類(超類)的構(gòu)造器。
-
如果父類有一個無參構(gòu)造器:
- 如果父類有一個無參構(gòu)造器,那么子類的構(gòu)造器可以不顯式調(diào)用?
super
。在這種情況下,如果子類構(gòu)造器的第一行沒有顯式調(diào)用?super
?或?this
,編譯器會自動插入一個無參的?super()
?調(diào)用。 - 例如:
java
class Parent {// 父類有一個無參構(gòu)造器 }class Child extends Parent {// 子類構(gòu)造器,自動插入 super()public Child() {// ...} }
- 如果父類有一個無參構(gòu)造器,那么子類的構(gòu)造器可以不顯式調(diào)用?
-
如果父類沒有無參構(gòu)造器:
- 如果父類沒有無參構(gòu)造器,那么子類的構(gòu)造器必須在第一行顯式調(diào)用?
super
?來調(diào)用父類的某個構(gòu)造器,并且必須作為子類構(gòu)造器的第一行語句。 - 例如:
java
class Parent {// 父類沒有無參構(gòu)造器,只有帶參數(shù)的構(gòu)造器public Parent(int x) {// ...} }class Child extends Parent {// 子類構(gòu)造器必須顯式調(diào)用 superpublic Child() {super(0); // 必須作為第一行語句// ...} }
- 如果父類沒有無參構(gòu)造器,那么子類的構(gòu)造器必須在第一行顯式調(diào)用?
總結(jié)來說,如果父類提供了無參構(gòu)造器,子類的構(gòu)造器可以不顯式調(diào)用 super
,因為編譯器會自動插入這個調(diào)用。如果父類沒有無參構(gòu)造器,子類的構(gòu)造器必須顯式調(diào)用 super
并且必須放在第一行。這是 Java 構(gòu)造器調(diào)用的規(guī)則,確保了對象在創(chuàng)建時能夠正確地初始化其父類部分的狀態(tài)。