Java 不使用getter方法访问私有字段?

Java 不使用getter方法访问私有字段?,java,Java,以下是JDK7源代码的摘录: public String(String original) { this.value = original.value; this.hash = original.hash; } value和hash都是private字段。为什么original.value合法?一个类可以访问它自己的私有字段(甚至在这个之外的其他实例上) 因为它仍然在字符串类中,并且可以使用同一类访问私有变量。请参阅: 访问修饰符描述对类的访问,而不是对实例的访问。由于valu

以下是JDK7源代码的摘录:

public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}

value
hash
都是
private
字段。为什么
original.value
合法?

一个类可以访问它自己的私有字段(甚至在
这个
之外的其他实例上)

因为它仍然在字符串类中,并且可以使用同一类访问私有变量。

请参阅:


访问修饰符描述对类的访问,而不是对实例的访问。由于
value
是在
String
类中声明的,因此它的所有成员(如构造函数)都可以无限访问它。

您应该查看访问控制表

Modifier    Class   Package Subclass    World
---------------------------------------------

private     **Y**      N        N           N

private修饰符指定只能在成员自己的类中访问该成员


因为它在类中,所以您可以访问它。

getter和setter实际上是在类的范围之外实现的。 在一个类中,任何变量都可以不受任何限制地访问。

哦..我的孪生兄弟:)你打败了我+1.
                   Access Levels
Modifier     | Class  | Package   |  Subclass | World
-------------+--------+-----------+-----------+--------
public       |   Y    |     Y     |     Y     |   Y
protected    |   Y    |     Y     |     Y     |   N
no modifier  |   Y    |     Y     |     N     |   N
private      |   Y  ← |     N     |     N     |   N    
Modifier    Class   Package Subclass    World
---------------------------------------------

private     **Y**      N        N           N