1. 程式人生 > >private方法不能繼承,重寫

private方法不能繼承,重寫

public class Father {
    private void f1(){
        System.out.println("Father f1()");
    }

    void f2() {
        System.out.println("Father f2()");
    }


    public static void main(String[] args) {
        //po父類引用,只能訪問父類的屬性和方法
        Father po = new Son();
        po.f1();
        po.f2();
    }
}

class Son extends Father{
    public
void f1(){ System.out.println("Son f1()"); } protected void f2(){ System.out.println("Son f2()"); } }

輸出:
Father f1()
Son f2()

解析:父類引用指向子類物件,重寫 f1,f2方法,咋一看,是動態繫結,其實不然

一:f1方法
父類中是private,子類是public, 我們知道子類在重寫父類方法是訪問許可權不能縮小,因此不是重寫,父類中是私有的,子類也不能繼承。
在這裡父類和子類的f1方法沒有任何關係,只能說明恰巧兩個方法同名
罷了。

f2方法
子類重寫父類的f2的方法,屬於動態繫結,因此呼叫的是子類方法!
這裡子類擴大的訪問許可權(從包訪問許可權到protected)