0
public class A {

protected int b = 16;

}


public class B extends A{

    private int b=20;


    public static void main(String[] args)
    {
        B b = new B();
        System.out.println(b.b);
    }

}

出力は 20 です。タイプ B のオブジェクトを参照する b がプライベート メンバに正しくアクセスできないようにするにはどうすればよいでしょうか?

4

5 に答える 5

2

staticクラスのメソッドは、privateそれを含むクラスのすべてのメンバーにアクセスできます。

あなたmainはクラスの一部であるため、Bすべてのメンバーを見ることができます。

于 2012-08-18T21:01:58.163 に答える
2

クラス B で b の値を取得しています。B は独自のプライベート メンバーにアクセスできます。

于 2012-08-18T21:02:40.200 に答える
1

Bであっても、クラス内から直接アクセスできますprivate。メソッドはそこに配置されているためmain、プライベート変数にアクセスできます。

クラスの変数bAクラスの変数によって隠され、b次のBように宣言しない限りアクセスできません。

A ab = new B();
System.out.println(ab.b);

これは印刷されます16

于 2012-08-18T21:01:12.697 に答える
0

はクラスmain()のメンバーであるため、メンバーにアクセスできます。Bprivate

于 2012-08-18T21:18:39.363 に答える
0

b上記の現在のクラスのクラス メンバー変数にアクセスしていますB。B は、宣言方法に関係なく、すべてのメンバー変数にアクセスできます。

は保護されていますが、呼び出し元のクラスで利用できるためA.b、アップキャストによってこれにアクセスできます。

System.out.println(((A)b).b);
于 2012-08-18T21:03:27.660 に答える