class Person { private BankAccount account; Person(BankAccount account) { this.account = account; } public Person someMethod(Person person) { //Why accessing private field is possible? BankAccount a = person.account; } }
请忘记设计。我知道OOP指定私有对象是该类的私有对象。我的问题是,为什么将OOP设计为使私有字段具有类级别的访问权限而不具有对象级别的访问权限?
private修饰符强制执行封装原理。
这个想法是,“外部世界”不应更改Person内部流程,因为Person的实现可能会随时间而变化(并且你将不得不更改整个外部世界以解决实现方面的差异-这几乎是不可能的)。
当Person实例访问其他Person实例的内部时-你可以确保两个实例始终了解Person的实现细节。如果更改了Person过程的内部逻辑-你要做的就是更改Person的代码。