Java中私有屬性和方法是否可以被繼承?
阿新 • • 發佈:2022-05-10
Java中私有屬性和方法是否可以被繼承?
不可以。子類只能再父類中寫一個public的get方法來獲取父類中的private屬性,子類就呼叫父類的get方法來獲取私有屬性。
子類繼承父類,子類擁有父類所有的屬性和方法,但是父類的私有屬性和私有方法子類是不能訪問的,父類的私有屬性可以通過get/set方法訪問到,在一個子類被建立時,首先會在記憶體中建立一個父類物件,然後在父類物件外部放上子類獨有的屬性,兩者合起來形成一個子類物件。子類物件擁有父類物件的所有屬性和方法,但是父類物件中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。所以子類物件是絕對大於父類物件的,所謂的子類物件只能繼承父類非私有的屬性和方法的說法是錯誤的,可以繼承,知識無法訪問。in a word:父類中宣告的private的屬性和方法,子類繼承父類以後,仍然可以獲取父類中私有的結構,只是因為封裝性的影響,使得子類不能直接呼叫父類的結構。
public class ExtendsTest { public static void main(String[] args) { Dog dog=new Dog(); dog.setName("劉越"); dog.getName(); System.out.println(dog.getName()); System.out.println("----------------"); Animal ani=new Animal(); ani.setName("劉越越"); ani.getName(); System.out.println(ani.getName()); } } class Animal{ private String name; private int age; public void shout(){ System.out.println("the animal is shouting"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Dog extends Animal{ }