访问同一类中对象的私有字段
在 Java 中,私有访问修饰符将字段可见性限制在该字段所在的类中被宣布。然而,一个常见的误解是,此限制适用于同一类中的对象。
考虑以下示例:
class Person { private BankAccount account; Person(BankAccount account) { this.account = account; } public Person someMethod(Person person) { // Why is accessing private field possible? BankAccount a = person.account; } }
为什么可以访问 person.account?
private 修饰符强制封装以保护对象的内部状态免受外部修改。然而,在同一个类中,对象共享相同的实现细节。他们知道类的私有字段和方法。
正如 Artemix 所解释的:
“这个想法是‘外部世界’不应该对 Person 的内部流程进行更改,因为 Person 的实现可能会改变(并且您必须改变整个外部世界来修复实现中的差异 - 这几乎是不可能的)。”
因为同一类中的对象共享相同的实现知识,授予他们访问私有字段的权限可确保他们始终能够正确访问和操作类的内部状态。如果实现发生变化,只需要更新类代码,无需修改类外的代码。
因此,OOP 设计允许私有字段具有类级别的访问,而不是对象级别的访问促进封装,同时保持类实现中的一致性。
以上是同一类中的对象如何访问私有字段?的详细内容。更多信息请关注PHP中文网其他相关文章!