Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我可以访问我的私有变量";其他";直接对象,在我的equals(objecto)方法中_Java_Protection - Fatal编程技术网

Java 为什么我可以访问我的私有变量";其他";直接对象,在我的equals(objecto)方法中

Java 为什么我可以访问我的私有变量";其他";直接对象,在我的equals(objecto)方法中,java,protection,Java,Protection,在Java的equals(objecto)方法中,我可以访问传入对象的私有变量,而无需通过其公共getter public boolean equals(Object o){ ... MyObject other = (MyObject)o; return getProp() == other.prop; } 这是怎么回事?该类的任何实例都可以访问私有数据,即使该类的一个实例正在访问另一个实例的私有成员。请务必记住,访问修饰符(私有、受保护、公共)控制着该类的访问,非

在Java的equals(objecto)方法中,我可以访问传入对象的私有变量,而无需通过其公共getter

public boolean equals(Object o){
    ...
    MyObject other = (MyObject)o;
    return getProp() == other.prop; 
}

这是怎么回事?

该类的任何实例都可以访问私有数据,即使该类的一个实例正在访问另一个实例的私有成员。请务必记住,访问修饰符(私有、受保护、公共)控制着该类的访问,非实例访问。

该类的任何实例都可以访问私有数据,即使A类的一个实例正在访问另一个A实例的私有成员。请务必记住,访问修饰符(私有、受保护、公共)正在控制访问,不是实例访问。

可能的答案是可见性模型的设计者认为在类中工作的任何开发人员都必须掌握整个类的实现


但这是一个坏主意。这助长了不良做法。在类
Person
中访问
Person
字段的开发人员不必知道整个类的实现。好的做法是使用访问器,而不必知道访问器执行什么操作。

可能的答案是可见性模型的设计者认为在类中工作的任何开发人员都必须掌握整个类的实现


但这是一个坏主意。这助长了不良做法。在类
Person
中访问
Person
字段的开发人员不必知道整个类的实现。好的做法是使用存取器,而不必知道存取器执行什么操作。

Ahhh我明白了,我一定会在JLSAHh中查找它。我明白了,我一定会在JLS中查找它