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