39

Javaのequals(Object o)メソッドでは、パブリックゲッターを経由せずに、渡されたオブジェクトのプライベート変数にアクセスできます。

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

どのようだ?

4

2 に答える 2

61

クラスAの1つのインスタンスがAの別のインスタンスのプライベートメンバーにアクセスしている場合でも、そのクラスの任意のインスタンスからプライベートデータにアクセスできます。アクセス修飾子(プライベート、保護、パブリック)がクラスアクセスを制御していることを覚えておくことが重要です。インスタンスアクセス。

于 2009-10-17T05:28:02.160 に答える
1

考えられる答えは、可視性モデルの設計者は、クラスで作業する開発者はクラス全体の実装をマスターする必要があると考えているということです。

しかし、これは悪い考えです。これは悪い習慣を助長します。Personクラス内の のフィールドにアクセスする開発者は、クラスPerson全体の実装を知る必要はありません。アクセサがどのような操作を行うかを知らなくても、アクセサを使用することをお勧めします。

于 2013-08-21T09:44:36.207 に答える