在java繼承中對繼承的權(quán)限有這樣的解釋:
1.子類可以繼承父類中訪問權(quán)限修飾符為public和protected的屬性和方法;
2.子類可以繼承父類中用默認訪問權(quán)限修飾的屬性和方法,但子類和父類必須在同一個包中;
3.子類無法繼承父類中訪問權(quán)限修飾符為private的屬性和方法;
4.子類無法繼承父類的構(gòu)造方法。
針對第四點作出如下解釋:
子類不可以繼承父類的構(gòu)造方法,只可以調(diào)用父類的構(gòu)造方法。
子類的構(gòu)造函數(shù)第一行都會使用默認的super()語句,默認訪問父類中的空參數(shù)構(gòu)造函數(shù)。在Java中,任何class的構(gòu)造方法,第一行語句必須是調(diào)用父類的構(gòu)造方法。如果沒有明確地調(diào)用父類的構(gòu)造方法,編譯器會幫我們自動加一句super()。
super()方法的作用是在子類初始化時調(diào)用父類的空參數(shù)構(gòu)造函數(shù)來完成初始化。
因此如果當(dāng)子類中沒用使用super()方法調(diào)用父類時,編譯過程中會報錯:
constructor Truck in class Truck cannot be applied to given types;
//構(gòu)造函數(shù)Truck在Truck類中不能被應(yīng)用于指定類型;