gpt4 book ai didi

java - 为什么这段Java代码能够编译并运行?我不明白

转载 作者:行者123 更新时间:2023-12-01 07:06:04 26 4
gpt4 key购买 nike

我正在准备认证考试,我遇到了这个可以编译并运行的示例,但问题是我认为它不应该编译,因为该方法是私有(private)的,并且我们正在尝试调用私有(private)方法来自类的一个实例。有人可以向我解释一下为什么它有效吗?

这是代码:

public class Test {
public static void main(String[] args) {
Test instance = new Test();
System.out.println(instance.number());
}

/* protected */ private int number() {
try {
new RuntimeException();
} finally {
return 1;
}
}
}

最佳答案

私有(private)方法和字段可以从声明类的任何地方访问,即使不是从实例方法内部调用:

   class Test {
private void doThis() {};

public static void main() {
Test a = new Test();
Test b = new Test();

a.doThis(); // No problem
b.doThis(); // No problem
}
}

附注代码中的方法最初是 protected ,而不是私有(private)的( protected 方法可以在同一包中的任何位置访问,也可以在包外的派生类中访问)。我现在已将其设为私有(private)。这样的代码也可以编译并运行。

关于java - 为什么这段Java代码能够编译并运行?我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23743531/

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