1

以下の「Tosee」クラスでは、s.hiddenInt を呼び出すと hiddenInt が表示されます。ただし、別のクラス「CantSee」で「ToSee」オブジェクトを作成すると、プライベート変数が表示されません。これはなぜですか?プライベートとは、クラスのどのインスタンスでも、クライアントがその特定のインスタンス変数またはメソッドを見ることができないことを意味するという印象を受けましたか? では、なぜ「ToSee」のメイン メソッドで hiddenInt を確認できるのでしょうか。

public class ToSee {

    private int hiddenInt = 5;

    public static void main(String[] args) {
        ToSee s = new ToSee();
        System.out.println(s.hiddenInt);

    }
}


public class CantSee {

    public static void main(String[] args) {
        ToSee s = new ToSee();
        System.out.println(s.hiddenInt);
    }

}
4

5 に答える 5

1
I was under the impression that private means that in any instance of a class, 
the client cant see that particular instance variable or method?

正しくない!プライベート アクセス修飾子は、それが使用されている変数が外側のクラスでのみアクセス可能であることを意味します。限目。main() メソッドは、hiddenInt プライベート インスタンス変数がある ToSee クラスにあるため、表示されます。ToSee クラスに含まれていない CantSee クラスの場合は表示されません (getter/setter メソッドを使用する必要があります)。

于 2013-09-20T13:05:18.840 に答える