JAVA中子類能不能繼承父類的私有屬性和方法

2021-03-19 18:19:52 字數 3128 閱讀 2348

1樓:育知同創教育

最近學習繼承,從書中看到子類繼承父類,子類擁有父類所有的屬性和方法,於是使用程式去驗證,發現父類的私有屬性和私有方法,子類是不能訪問的,當然一些父類的私有屬性可能可以通過相應的方法訪問到,但是私有的方法似乎不能簡單的訪問,這裡暫不考慮java反射機制,於是我分析,子類不能繼承父類私有的屬性及方法,但是分析了記憶體後,我發現我是錯的,在一個子類被建立的時候,首先會在記憶體中建立一個父類物件,然後在父類物件外部放上子類獨有的屬性,兩者合起來形成一個子類的物件。所以所謂的繼承使子類擁有父類所有的屬性和方法其實可以這樣理解,子類物件確實擁有父類物件中所有的屬性和方法,但是父類物件中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。就像有些東西你可能擁有,但是你並不能使用。

所以子類物件是絕對大於父類物件的,所謂的子類物件只能繼承父類非私有的屬性及方法的說法是錯誤的。可以繼承,只是無法訪問到而已。

java中子類可以繼承父類的靜態方法嗎

2樓:匿名使用者

其實樓主只要理解static修飾的成員在記憶體中的分配情況就能理解;

以樓主**為例:

1.首先宣告一點: static修飾的變數/函式優行於該類物件存在; 隨著類的載入而載入,而這時還不需要物件; 這也是靜態**可用類名. 出來的原來;

2.理解以上就可推斷出很多;eg:

2.1 假設有b b=new b();

則這時因為繼承的關係,會一直呼叫到a的構造方法。這樣就會把a,b中兩個print()都加入進方法區, 但a的print()方法在a對應的區域,b的print方法在b中對應的區域;

此時我們用b,print()呼叫的是b中的print();

2.2 假設有a a=new b();

此時因為編譯器在編譯時認為a的型別是a,所以呼叫的是a中的print();

//這也是父類物件不能呼叫子類物件的特有方法的原因.。

而在執行時, jvm會發現a的真實型別是b,所以a可向下轉型為b型別;這時就可以呼叫子類特有方法

//這也是為什麼可以向下轉型,

3樓:黑馬程式設計師

不可以,靜態方法不能繼承,也不能覆蓋。

4樓:營化衡巧春

若父類的static

方法,子類可以訪問時,則:能繼承,能覆蓋,但不能重寫(重寫只針對非static方法)。

即使在子類中有一個與父類具有相同方法標籤(方法名相同,引數型別相同,返回值型別相同,甚至連訪問級別也相同),也只能說明是對子類又新建了一個與父類同名的靜態方法,而不是對父類的靜態方法的重寫.

java中,子類將繼承父類的所有屬性和方法嗎

5樓:育知同創教育

1 是的,在java中,子類繼承父類的所有方法和屬性(構造方法要用關鍵super([引數])呼叫)另外,當父類的方法或屬性被宣告為private(私有的)時,子類也是不可以繼承的。 2、繼承是java中一個重要的特色,便於程式的編寫,提高**的重用性。

6樓:明月依舊長

子類將繼承父類的非私有的屬性和方法

java子類是否會有父類的private方法和屬性

7樓:育知同創教育

子類繼承父類,子類擁有了父類的所有屬性和方法。

程式驗證,父類的私有屬性和方法子類是無法直接訪問的。當然私有屬性可以通過public修飾的getter和setter方法訪問到的,但是私有方法不行。

假設:子類不能夠繼承父類的私有屬性和方法

那麼:分析記憶體後,會發現,當一個子類被例項化的時候,預設會先呼叫父類的構造方法對父類進行初始化,即在記憶體中建立一個父類物件,然後再父類物件的外部放上子類獨有的屬性,兩者合起來成為一個子類的物件。

所以:子類繼承了父類的所有屬性和方法或子類擁有父類的所有屬性和方法是對的,只不過父類的私有屬性和方法,子類是無法直接訪問到的。即只是擁有,但是無法使用。

java中子類會繼承父類的構造方法嗎

8樓:好程式設計師

是的,繼承

是子類會繼承父類的屬性和方法,構造方法也是屬於方法,所以會繼承構造方法,例如:

public class concept

}//父類(超類)

class chicken

public void desc()

}//子類

class homechicken extends chicken}//子類野雞類

class pheasant extends chicken}在這裡,

public class concept

}//父類(超類)

class chicken

public void desc()

}//子類

class homechicken extends chicken}//子類野雞類

class pheasant extends chicken}在這裡homechicken 繼承父類chicken,在子類homechicken中,也繼承了父類的chicken()方法

9樓:萍水相逢本是緣

不會,構造方法不能重寫,但可以過載

java繼承中父類可以訪問子類哪些屬性

10樓:育知同創教育

能的1、除了java中,子類繼承父類的所有方法和屬性(構造方法要用關鍵字super([引數])呼叫)

另外,當父類的方法或屬性被宣告為private(私有的)時,子類也是不可以繼承的。

2、繼承是java中一個重要的特色,便於程式的編寫,提高**的重用性。

11樓:匿名使用者

父類能訪問子類 public static修飾的屬性;

12樓:米斯特丸不知道

父類不能獲取子類的屬性啊

java中子類繼承父類的構造方法嗎

13樓:匿名使用者

class child extends parent}

14樓:好程式設計師

能啊 用super.構造方法名,就可以使用你類的構造方法.

分手後,不能繼續做朋友的原因?分手後能不能繼續做朋友?

您好 分手後不能繼續做朋友的原因主要在於彼此已經在一起過了,就是覺得不合適才會分手的,既然分手還繼續當朋友,只會讓彼此糾纏不清,這是不負責任的表現,也會影響彼此尋找適合自己的另一半的!所以以上就是分手後不能繼續做朋友的原因!戀人之間都曾對對方付出過真心,這份真心都希望得到好的結果,但是如果兩個人分手...

糙米能不能生吃,糙米能不能生吃

糙米不適宜生吃。有一種吃法叫做 生機飲食 原指利用新鮮 沒有加工 加熱,沒有汙染,迴歸自然,攝食天然植物的養生法。倡議者喝小麥草汁 精力湯,生食蔬菜芽苗,吃五穀糙米飯 全麥製品,完全禁絕油 鹽 糖 動物性蛋白及一切加工品。在臺灣,這套從美國傳來的飲食方式原本只在一群癌症病人中間流行,但是,由於飲食觀...

白塞病能不能治癒?白塞病能不能根治?

白塞病不能 只能是對症 血管炎 以及眼部炎症的 一般可以在醫生指導下應用沙利度胺,特別是口腔黏膜潰瘍,有比較好的效果 其次還可以區域性應用糖皮質激素 如果有關節炎,還能夠應用非甾體抗炎藥物 眼炎和血管炎的 一般會選擇糖皮質激素和免疫抑制劑。白塞氏病目前還沒有 的手段,並不能完全 但並不是不能 白塞病...