private方法不能繼承,重寫
阿新 • • 發佈:2018-12-06
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)