gpt4 book ai didi

java - 下面两个程序有什么区别?

转载 作者:行者123 更新时间:2023-12-01 17:37:11 24 4
gpt4 key购买 nike

代码: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 会抛出“方法不可见”之类的错误。这个错误的原因是什么??

最佳答案

在第二个示例中,您尝试对 Ravi 类型的变量调用 display() 方法。 Ravi 没有可从此位置(即在 Ajay 内部)访问的方法 display()

在您的第一个示例中,您从内部Ajay调用Ajay的私有(private)display()方法。请注意,调用私有(private)方法使用运行时多态性!确切的调用代码是在编译时决定的!

关于java - 下面两个程序有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5140731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com