java中為什么private修飾的類不能繼承父類

java中為什么private修飾的類不能繼承父類

子類繼承父類,子類擁有了父類的所有屬性和方法。程序驗證,父類的私有屬性和方法子類是無法直接訪問的。

當然私有屬性可以通過public修飾的getter和setter方法訪問到的,但是私有方法不行。

假設:子類不能夠繼承父類的私有屬性和方法那么:分析內存后,會發(fā)現,當一個子類被實例化的時候,默認會先調用父類的構造方法對父類進行初始化,即在內存中創(chuàng)建一個父類對象,然后再父類對象的外部放上子類獨有的屬性,兩者合起來成為一個子類的對象。所以:子類繼承了父類的所有屬性和方法或子類擁有父類的所有屬性和方法是對的,只不過父類的私有屬性和方法,子類是無法直接訪問到的。即只是擁有,但是無法使用。

c++ 子類為什么不繼承父類構造函數

構造是不會繼承的,這句話的意思是:子類對象不能 (用點的方式) 訪問父類的構造。但不代表子類實例化時父類構造不會運行。

一句話,父類不能只寫有參構造(無參被屏蔽了),若一定只寫有參構造,那就必須 子類要顯式調用父類的有參構造。百科

否則就會報錯。因為,除了上述情況外,子類會無條件的調用父類無參構造,若父類沒有無參構造,所以就會報錯。

java父類的構造方法為什么不能被子類繼承

子類=父類﹢新增的變量﹢新增的方法。對象語言的構造器作用在于對類創(chuàng)建實例對象時完成對象的初始化工作(為變量申請內存空間等)因此,子類的構造器除了承擔著初始化子類的新增變量和方法,還要初始化父類自身新增加的變量和方法。

一般來說,如果在子類的構造器中沒有使用super()調用父類相應的構造器,子類的構造器會自動調用父類默認的,也就是不帶參數的構造器來初始化父類的東西。

而Java類的默認構造器,當你沒有為你寫的類建造構造器的時候,Java會自動幫你創(chuàng)建這個默認構造器,但是當你自己編寫了構造器后,你自己編寫構造器將會覆蓋掉默認的構造器,就是說默認的構造器不存在。那么這個時候,你在繼承的子類里面沒有顯示添加super()函數調用你在父類里編寫的父類構造器,子類的構造器將不能自動找到父類的構造器。找不到父類的構造器意味著什么?意味著你的子類實例化的時候找不到父類的構造器來初始化父類的東西,不能完成類實例對象的初始化工作,你說你的子類能不出現錯誤?! 所以,在子類的構造器中需不需要添加super()調用父類相應的構造器,只需要考慮子類的構造器才初始化的時候能不能完成所有變量和方法的初始化就可以了。另外,根據自己初始化工作的需要使用super()調用相應的父類構造器來初始化也是有必要的。

所以你所說的子類不能繼承父類構造器,這說明你沒有顯式的調用seper(),而且父類構造器被你的子類覆蓋或調用的父類中沒有無參構造器所引起的。

c++中子類不能繼承父類的一些函數這個不能繼承修飾的到底是什么

cla

Java中子類不能繼承父類的構造方法應如何理解

首先,你這句話沒有說清楚構造函數(一般我們講的“函數”就是“方法”)是默認的無參數,還是自己手動寫的有參數的。

一個類可以定義多個 構造函數,如果在定義類時你手動寫了一個有參數的構造函數,那么當前類只有這一個有參數的構造函數。

如果在定義類時沒有定義構造函數,則?編譯系統(tǒng)會自動插入一個無參數的默認構造函數,這個構造函數不執(zhí)行任何代碼,且不會顯示出來。

Java中,子類只能繼承父類的用protected 和 public修飾的構造函數。其中,無參構造函數只能是 public。