方法可以访问所调用对象的私有数据。
一个方法可以访问所属类的所有对象的私有数据,
这令很多人感到奇怪! 例如, 下面看一下用来比较两个雇员的 equals 方法。
public boolean equals(Employee other)
{
return name.equals(other.name); }
典型的调用方式是
if (harry,equals(boss))
C++ 注释: C++ 也有同样的原则。方法可以访问所属类的私有特性(feature), 而不仅限 于访问隐式参数的私有特性
私有方法
在实现一个类时, 由于公有数据非常危险, 所以应该将所有的数据域都设置为私有的。然 而, 方法又应该如何设计呢? 尽管绝大多数方法都被设计为公有的, 但在某些特殊情况下, 也 可能将它们设计为私有的。有时, 可能希望将一个计算代码划分成若干个独立的辅助方法。通 常, 这些辅助方法不应该成为公有接口的一部分, 这是由于它们往往与当前的实现机制非常紧 密, 或者需要一个特别的协议以及一个特别的调用次序。最好将这样的方法设计为 private 的。
在 Java 中, 为了实现一个私有的方法, 只需将关键字 public 改为 private 即可。
对于私有方法, 如果改用其他方法实现相应的操作, 则不必保留原有的方法。 如果数据 的表达方式发生了变化, 这个方法可能会变得难以实现, 或者不再需要。 然而, 只要方法是 私有的, 类的设计者就可以确信: 它不会被外部的其他类操作调用, 可以将其删去。 如果方 法是公有的, 就不能将其删去, 因为其他的代码很可能依赖它。