1. 程式人生 > 其它 >子類會不會繼承父類的私有結構

子類會不會繼承父類的私有結構

技術標籤:JAVA概念學習java

在學習JAVASE繼承章節的時候,想到了一個問題

子類會不會繼承父類的私有資料型別?

個人的答案(僅代表個人講解)是不會,但不會不代表子類中沒有父類私有資料型別

百度上的答案參差不齊,在查閱書籍之後,得到了一個答案。
在《資料結構與演算法分析-JAVA語言描述第二版 Frank M.Carrano著》中,P46寫著,

在任何其它類(包括派生類)的方法定義中,不能通過名稱訪問基類中私有型別域,儘管如此,派生類卻確實繼承了基類的資料域

資料域很關鍵,可以理解為子類中還有一個父類物件

驗證:

class Person{
    private String name;
private String getName() { System.out.println(this); return name; } private void setName(String name) { System.out.println(this); this.name = name; } public void test(){//過載 this.setName("測試"); System.out.println(this.getName
()); System.out.println(this+"test()呼叫"); } } class Student extends Person{ } public class TestDemo { @Test public void testDemo(){ Student student=new Student(); System.out.println(student); student.test(); } }

在這裡插入圖片描述
新增呼叫私有函式程式碼後
在這裡插入圖片描述

可以看出呼叫父類私有結構的物件為子類物件(@d7b1517),但是子類物件不能直接呼叫父類私有型別或函式.實際上getName函式是在父類中得到呼叫,也就是子類繼承了父類的資料域

2020 12.23