1. 程式人生 > 其它 >java 繼承相關知識點

java 繼承相關知識點

Q:子類能否繼承父類的構造器?
A:子類不能繼承父類的構造器,因為子類有自己的構造器。

Q:子類能否繼承父類的私有成員(私有成員變數,私有成員方法)?
A:值得注意的是子類可以繼承父類的私有成員(成員變數,方法),只是子類無法直接訪問而已,可以通過getter/setter方法訪問父類的private成員變數。也可以暴力去訪問(可以通過反射呼叫)繼承自父類的私有成員。

Q:子類能否繼承父類的靜態成員(靜態成員變數,靜態成員方法)?
A:子類是不能繼承父類的靜態成員的,子類只是可以訪問(呼叫)父類的靜態成員,父類的靜態成員只有一份可以被子類共享訪問。共享並非繼承。

Q:子類可以繼承多個父類嗎?
A:java

是不允許使用 extends 去繼承多個類的。java 如果出現多繼承、父類中都有相同的屬性和方法,子類如果使用父類的屬性,無法確定是哪一個父類的屬性。父類中如果有相同的方法,並且子類並沒有覆蓋該方法。子類呼叫父類的時候 無法判斷是那個父類的方法。而java中介面是可以多繼承的。介面(jdk 1.8 以下版本)裡面的方法沒有具體實現,即使在多繼承時出現父類中都有相同方法的情況也並無大礙。而且介面的成員變數都是 static final的,有自己靜態域,只能供自己使用。

補充:jdk1.8開始之後,介面中可以有靜態方法,多繼承時介面中存在同名的靜態方法並不會衝突,原因是隻能通過各自介面名訪問靜態方法。