当前位置: 首页 > 面试题库 >

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

章安易
2023-03-14
问题内容

在Java中,可以通过equals(Object o)方法访问传入的对象的私有变量,而无需通过其公共获取器。

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

怎么样?


问题答案:

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



 类似资料:
  • 问题内容: 大家好!我有一个简单的问题。…为什么我可以从main方法中获得一个私有变量?我知道,我在包含类中,但这是主要的。我相信主体不是包含它的类的一部分……那么我不会去找私人成员,但是我可以……为什么?请帮助… thx 问题答案: Main是您的类的一部分,您已经在类中声明了它:) main不是您的对象的一部分,它不会是您从该类创建的对象的任何部分,但它仍然是该类的一部分。这对于任何静态函数都

  • 问题内容: 我不应该能够调用实例化对象的私有方法。我想知道为什么下面的代码有效。 我知道可以从类中访问私有方法。但是,如果类中的方法实例化了同一类的对象,则作用域规则是否不适用于该实例化的对象? 如本例所示,像main这样的静态方法可以访问类的非静态成员吗​​? 问题答案: 您的方法是的方法,因此可以调用的私有方法。 只是因为它是一个方法并不妨碍它表现得像为目的的方法,等等。 只是阻止的方法 等

  • 本文向大家介绍如何实现一个私有变量,用getName方法可以访问,不能直接访问?相关面试题,主要包含被问及如何实现一个私有变量,用getName方法可以访问,不能直接访问?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: (1)通过defineProperty来实现   (2)通过函数的创建形式  

  • 问题内容: 我希望我说的是我的话。我有这样的课: 和其他这样的类: 这是从其他类(在该示例代码中)访问和更改其值的正确方法吗,是否有更好或更合适的解决方案?请注意,这是具有方法的类。 问题答案: 从另一个类访问私有变量的正确方法是使用getter和setter方法。否则,您应该将该变量公开。 那是: 但是,直接返回私有数据是一种不好的做法- 允许外部代码修改您的私有状态。通常,您应该返回私有数据的

  • 这将打印a.a=50 但是,如果我将更改为,那么我可以如何访问该变量呢?

  • 下面是一个不可变类的示例: 下面是类的实现: 当我创建的实例时,我正在的构造函数中对进行深度复制,但是我能够通过更新的值,这种方法破坏了my类的不变性。我在这里做错了什么?