錯誤:m1() has protected access in A
保護不能訪問不同的包子類爲什麼?
當嘗試使用超類引用變量(A obj=new B()
)
這是在包裝的pkg1第一類;
package pkg1;
public class A {
protected void m1() {
System.out.println("protected method");
}
}
這是第二類,它是在另一個包pkg2中導入pkg1;
package pkg2;
import pkg1.A;
public class B extends A {
@Override
protected void m1() {
System.out.println("override m1");
}
public static void main(String ar[]) {
A obj=new B();
obj.m1();
}
}
你試圖訪問'obj.m1()'和'obj'是類型A'的'。所以... –
確實。請解釋你爲什麼期望*工作。 (未來,請注意代碼格式化,現在我已經解決了它,但之前它是一團糟)。 –
@denys Seguret,@ jon Skeet如果我不是worng java給出了動態方法的機制派遣,所以我想我可以通過使用類型A的參考變量來訪問從A重寫的m1()方法。 –