子類繼承父類

class A { 
    private int i=1; 
    public int getI(){ 
        return i; 
    } 
    public void setI(int i){ 
        this.i=i; 
    } 
} 

public class B extends A { 
    int i=2; 
    public static void main (String [] args) { 
        B b = new B(); 
        System.out.println(b.getI()); 
    } 
}

1.並不是private成員不會被繼承.事實上子類可以繼承父類的任何變量和方法。private、protected只是訪問權限而已。即使i是public的
輸出結果也肯定是1.

2.方法可以覆蓋,成員變量並沒有覆蓋一說,也就是子類的i和父類的i是共存在子類體內的。父類對象中有i變量、set get兩個方法。子類class中應有i【繼承於父類對象】、i【子類對象】兩個變量、set get兩個方法【繼承於父類對象】。

3.java中的原則是調用的是哪個類的方法,那麼這個方法訪問的就是這個類中的成員。子類中沒有覆蓋public int getI()這個方法的話,那麼子類調用的其實是父類的getI()方法.所以返回的是父類中的i.

所以如果子類覆蓋了getI()方法,那麼就會輸出的是子類中的i了,因爲調用的是子類中的方法。

調用父類的方法取得是父類的i.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章