方法繼承方法的知名度,我得到這個編譯器錯誤:不能減少從父
You cannot reduce the visibility of a inherited method.
我有以下代碼
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
這裏父類有func()
方法,它是公開的,由覆蓋子類TestClass
這是私人的。現在編譯器會拋出錯誤,我不能降低可見性。從技術上講,每當我創建TestClass
指定給父類型對象的對象時,由於func()
方法被覆蓋,所以TestClass的func()將始終被調用,那麼爲什麼我們應該關注可見性?這個錯誤背後的原因是什麼?有人能解釋清楚嗎?
謝謝Bohemain。我明白了理由。感謝您指出命名標準。 – Mojoy 2012-01-27 19:16:43
嗨..這讓我想到爲什麼我不能在超類中公開的方法在子類中保護修飾符?由於受保護的修飾符可以在任何包的包和子類中訪問! – Mojoy 2012-01-28 13:40:47
受保護的方法對其他任意類都不可見,但super的'public'方法是,所以同樣的推理適用。 *任何*可見度降低都是錯誤的。 – Bohemian 2012-01-28 19:21:14