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