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
public | protected | デフォルト | private | |
---|---|---|---|---|
同一クラス | ○ | ○ | ○ | ○ |
同一パッケージ | ○ | ○ | ○ | × |
サブクラス | ○ | ○ | × | × |
無関係 | ○ | × | × | × |