gpt4 book ai didi

java - 私有(private)成员可访问性

转载 作者:行者123 更新时间:2023-12-05 09:35:28 25 4
gpt4 key购买 nike

我有一个用例,我已将其简化为以下程序:

public class A {
private int x = 100;

class B {
private int y = new A().x;
}

public static void main(String []s) {
System.out.println(new A().new B().y);
}
}

此程序运行良好并打印 100

根据文档(Access Modifiers):private 修饰符确保该字段只能在其自己的类中访问。但是在上面的程序中,它似乎是矛盾的。

是这个意思吗?

  1. 内部类可以访问外部类的私有(private)成员。
  2. 内部类的私有(private)变量可以在外部类中访问。

请帮助我理解。

最佳答案

Java 语言规范是关于该语言的精确信息的更好来源。

在这种情况下,相关部分在 clause 6.6.1 中:

Otherwise, the member or constructor is declared private, and access is permitted if and only if it occurs within the body of the top level type (§7.6) that encloses the declaration of the member or constructor.

“在顶级类型的主体内”是重要的部分。

所以基本上,在同一顶级类型的主体内(A 在您的情况下),所有代码(无论是否以嵌套类型编写)都可以访问任何私有(private)构造函数/成员声明在同一主体内(无论是否在嵌套类型中声明)。

关于java - 私有(private)成员可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65850622/

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