子類會不會繼承父類的私有結構
阿新 • • 發佈:2020-12-24
在學習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