アクセス制御とパッケージ

キーワード説明
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