1. 程式人生 > 其它 >Java中私有屬性和方法是否可以被繼承?

Java中私有屬性和方法是否可以被繼承?

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{
    
}