当您在子类中重写方法时降低方法的可见性时,为什么编译器会给出错误消息?
One.java
public class One {
private void run() {
System.out.println("one");
}
public void start() {
this.run();
}
}
Run Code Online (Sandbox Code Playgroud)
Two.java
public class Two extends One {
public void run() {
System.out.println("two");
}
}
Run Code Online (Sandbox Code Playgroud)
Main.java
public class Main {
public static void main(String[] args) {
Two t = new Two();
t.start();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:一
但是如果我在类中声明run方法public,One我会得到"两个"作为输出.
这是非常不可预测的,这是如何工作的?