#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();
    }
}
}}