📅  最后修改于: 2020-03-23 00:54:55             🧑  作者: Mango
在Java中,当派生类函数将重写基类函数,编译器错误赋予对派生类函数的更多限制访问。 例如,如果在基类中有一个public void foo()函数,并且在派生类中将其重写,则foo()的访问说明符不能是派生类中的public。如果foo()是基类中的私有函数,则对其的访问说明符可以是派生类中的任何内容。
请考虑以下两个程序。程序1编译失败,程序2运行正常。
程序1
// 文件名: Main.java
class Base
public void foo() { System.out.println("父类"); }
}
class Derived extends Base {
// 编译错误
private void foo() { System.out.println("派生类"); }
}
public class Main {
public static void main(String args[]) {
Derived d = new Derived();
d.foo();
}
}
程序2
// 文件名: Main.java
class Base {
private void foo() { System.out.println("父类"); }
}
class Derived extends Base {
// 成功运行
public void foo() { System.out.println("派生类"); }
}
public class Main {
public static void main(String args[]) {
Derived d = new Derived();
d.foo();
}
}
输出:
派生类