這樣理解,java繼承中多型的屬性和方法

zhaozhangxiao 發表於 2021-07-26

先看一個例子:

//父類
public class Father {
    String name = "father";

    public void test(){
        System.out.println("I am a father");
    }
}

//子類
public class Child extends Father{
    String name = "child";

    public void test(){
        System.out.println("I am a child");
    }
}

//測試
public class Main {
    public static void main(String[] args) {
        //父類引用指向之類物件
        Father father = new Child();
        //屬性
        System.out.println(father.name);
        //方法
        father.test();
    }

}

輸出結果為:

father
I am a child

可以看出來,子類中具有父類同名的屬性和方法,在多型的情況下,使用的是父類的屬性和子類的方法;
在繼承當中,子類繼承父類的屬性和方法是有差別的,父類的屬性不能被重寫,只能被呼叫;而父類的方法可以被重寫,也可以被呼叫;
當子類中存在和父類同名的屬性時,父類屬性會被隱藏起來,但在多型的情況下屬性被呼叫時會啟用父類的屬性而隱藏子類的屬性,而方法不會被隱藏,只能使用super在子類中呼叫父類的方法。

本作品採用《CC 協議》,轉載必須註明作者和本文連結