gpt4 book ai didi

Java 私有(private)方法覆盖

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:28 26 4
gpt4 key购买 nike

我遇到过这种情况。我们有一个类可以说 Main 有一个私有(private)方法打印。还有另一个类 Main1,它扩展了 Main 类并重新定义了 print 方法。由于 main1 是 Main1 类的一个对象,我希望调用 main1 打印方法...

public class Main {
public static void main(String[] args) {
Main main1 = new Main1();
List<String> list = new ArrayList<String>();
main1.print(list);
}

private void print(List<String> string) {
System.out.println("main");
}

}

class Main1 extends Main {
public void print(List<String> string) {
System.out.println("main1");
}
}

在这种情况下,当我们运行程序时,它会打印“main”。这真的让我感到困惑,因为该方法是私有(private)的,甚至不是 Main1 类的一部分。

最佳答案

答案并不难:

  • main1类型变量是 Main (不是 Main1 )
  • 所以你只能调用该类型的方法
  • 唯一可能的方法叫做print接受 List<String>Main是私有(private)的
  • 调用代码在类中 Main所以它可以调用该类中的私有(private)方法

因此Main.print(List<String>)将被调用。

请注意,更改 main1 的类型至 Main1将导致其他 print(List<String>)方法被调用。

关于Java 私有(private)方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7551828/

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