32. アクセス制御

32. アクセス制御

public

l:\lesson077\test.java

class test extends pak.pkcls implements pak.intf {
    public static void main(String args[]) {
        pak.pkcls.write(pak.intf.name);
    }
}

l:\lesson077\pak\intf.java

package pak;

public interface intf {
    String name = "kitty on your lap";
}

l:\lesson077\pak\pkcls.java

package pak;

public class pkcls {
    public static void write(String str) {
        System.out.println(str);
    }
}

実行結果

L:\lesson077>java test
kitty on your lap

private

l:\lesson078\test.java

class test {
    public static void main(String args[]) {
        NADESICO rury = new NADESICO("星野ルリ" , "JAVAばっか…");
        rury.write();
        System.out.println(rury.name); // これはエラー
    }
}

class NADESICO {
    private String name;
    private String fool;

    void write() {
        System.out.println(this.name + "\n" + this.fool);
    }

    NADESICO(String name , String fool) {
        this.name = name;
        this.fool = fool;
    }
}

コンパイル結果

L:\lesson078>javac test.java
test.java:5: name は NADESICO で private アクセスされます。
System.out.println(rury.name); // これはエラー
^
エラー 1 個

protected

l:\lesson079\test.java

class test {
    public static void main(String args[]) {
        sub_class obj = new sub_class();
    }
}

class sub_class extends pak.pkcls {
    sub_class() {
        pak.pkcls.write();
    }
}

l:\lesson079\pak\pkcls.java

package pak;

public class pkcls {
    protected static void write() {
        System.out.println("kitty on your lap");
    }
}

実行結果

L:\lesson079>java test
kitty on your lap

publicprotectedデフォルトprivate
同一クラス
同一パッケージ×
サブクラス××
無関係×××