0
class a{
    private int i=100;
    a(){
        //this.i=5;
    }
}
class b extends a {
    b( ){
    //super.i=10;
    a a = new a();
    System.out.println(super.i);

}

}
class c {
    public static void main(String [] args){

        b b = new b();
        }}

上記のプログラムでは、私はそれが不可能であることを知っているスーパーキーワードでプライベート変数にアクセスしようとしていましたが、驚くべきことに、このAIDE(java ide)を使用して私のAndroidモバイルではスーパーでこれにアクセスできましたが、コメントアウトしたように直接アクセスできませんでした私が知りたいコードは、AIDEのバグか、ここで何か間違ったことをしているということです。

画像

4

1 に答える 1

0

super.iAIDE が、クラスで使用してコンパイルできるという印象を与えた場合、bはい、それは AIDE のバグです。iは でプライベート アクセスを持っているaため、 以外では使用できませんa。Java コンパイラーは次のように言います。

b.java:5: エラー: にプライベート アクセス権があります
    System.out.println(super.i);
                            ^

Java では、クラス名の最初に大文字を使用するのが圧倒的な慣例です。自分のコードで好きなことをすることができますが、他の人と作業したり助けを求めたりするときは、おそらく規則に従う方がよいでしょう。So A、 not a、およびBnot b(クラスの場合)。

于 2014-07-13T13:20:35.430 に答える