代码之家  ›  专栏  ›  技术社区  ›  non sequitor

为什么我可以在我的equals(object o)方法中直接访问“other”对象的私有变量?

  •  32
  • non sequitor  · 技术社区  · 15 年前

    在JavaS(Objo)方法中,我可以访问传入的对象的私有变量而不必通过它的公共吸气剂。

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

    怎么样?

    2 回复  |  直到 11 年前
        1
  •  48
  •   cletus    15 年前

    私人数据可由访问 任何 该类的实例,即使A类的一个实例正在访问A的另一个实例的私有成员。请记住,访问修饰符(private、protected、public)正在控制 访问,而不是 实例 访问。

        2
  •  2
  •   Nicolas Barbulesco    11 年前

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

    但这是 坏主意 . 这会助长不良行为。开发人员访问的字段 Person ,在教室里 不需要知道整个类的实现。好的做法是使用访问器,而不必知道访问器执行的操作。