编号:1
class Ajay {
private void display() {
System.out.println("Ajay");
}
public static void main(String ...strings ){
Ajay r=new Ravi();
r.display();
}
}
class Ravi extends Ajay{
public void display() {
System.out.println("ravi");
}
}
编号:2
class Ravi {
private void display() {
System.out.println("ravi");
}
}
public class Ajay extends Ravi{
public void display() {
System.out.println("ajay");
}
public static void main(String ...strings ){
Ravi r=new Ajay();
r.display();
}
}
我对以上两个代码有疑问。
代码1执行时没有任何错误,而代码2则抛出错误,例如方法不可见。
此错误的原因是什么?
最佳答案
在第二个示例中,您尝试对类型为display()
的变量调用方法Ravi
。 Ravi
没有可从此位置(即在display()
内部)访问的方法Ajay
。
但是,在第一个示例中,您从display()
内部调用Ajay
的私有Ajay
方法。注意,调用private
方法不会使用运行时多态!要调用的确切代码在编译时确定!