#navi(開発メモ/Java/基礎);
*アクセス制御とパッケージ [#t7f16cb3]

|キーワード|説明|h
|public   |どのクラスからでも参照可能|
|private  |同じパッケージ内のコード、または別のパッケージ内のサブクラスにのみアクセス可能|
|protected|同じクラス内のコードのみアクセス可能|


''e\E.java''
#codeprettify{{  
package e;

public class E{
    public int e1 = 11;
    protected int e2 = 22;
    private int e3 = 33;
}
}}

''f\F.java''
#codeprettify{{  
package f;
import e.*;

public class F extends E{
    public void display()    {
        //publicメンバにアクセスできる
        System.out.println(e1);

        //スーパークラスのprotectedメンバにアクセスできる
        System.out.println(e2);

        //privateメンバにはアクセスできない
        //System.out.println(e3);
    }
}
}}

''g\G.java''
#codeprettify{{  
package g;
import e.*;

public class G{
    public void display()    {
        //Eのインスタンスを作成する
        E e = new E();

        //publicメンバにアクセスする
        System.out.println(e.e1);

        //protectedメンバにアクセスできない
        //System.out.println(e.e2);

        //privateメンバにアクセスできない
        //なぜって?サブクラスでも同じパッケージ内でもないから
        //System.out.println(e.e3);
    }
}
}}

''h\H.java''
#codeprettify{{  
package h;

import f.F;
import g.G;

class ProtectedDemo{
    public static void main(String args[])    {
        //別パッケージ内のサブクラスをテストする
        F f = new F();
        f.display();

        //別のパッケージ内の非サブクラスをテストする
        G g=new G();
        g.display();
    }
}
}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS