1. 程式人生 > >Java繼承的兩個小例子

Java繼承的兩個小例子

首先上程式碼

public class A {
    protected String value = "123";

    public A(){
        System.out.println("A");
    }
    public String getValue(){
        return value;
    }
}

public class B extends A{
    protected String value = "456";
    public B(){
        System.out.println("B");
    }

    public static void main(String[] args){
        A a = new B();
        System.out.println(a.getValue());
        a = new A();
    }
}

編譯後輸出的是什麼呢?

A

B

123

A

為什麼呢?

可以看出在new一個B物件時,是先構造父物件(輸出A),再構造子物件(輸出B)

而之所以輸出123是因為,從父類繼承來的沒有被子類覆蓋的方法操作的是繼承於父類的被隱藏的變數,也就是123

如果子類中覆蓋了此方法,則返回的是456