| 修飾子名 | アクセス範囲 | 適用対象 |
| protected | 同一パッケージ内のクラスからアクセス可能 サブクラスからのアクセス制限なし |
メンバ |
package パッケージ名;
import スーパークラスのパッケージ名.スーパークラス名;
class クラス名 extends スーパークラス名 {
}
package pk01; public class ParentClass { protected static value01; protected static value02; protected static void method01(){} protected static void method02(){} }
package pk_02; import pk01.ParentClass; class ChaildClass extends ParentClass { //処理 ParentClass のメンバがあるものとしてコーディングできます。 }
ws
|---pk01
| └---ParentClass.java ← スーパークラス(継承元)
|
└---pk02
└---ChaildClass.java ← サブクラス
//ParentClass.java package pk01; public class ParentClass{ protected static void say(){ System.out.println("ParentClass"); } }
//ChaildClass.java package pk02; import pk01.ParentClass; class ChaildClass extends ParentClass{ public static void main(String[] args){ System.out.println("main method."); say(); } }
ws>javac pk02/ChaildClass.java ws>java pk02.ChaildClass main method. ParentClass
ws
|---pk01
| └---ParentClass_B.java ← スーパークラス(継承元)
|
└---pk02
└---ChaildClass_B.java ← サブクラス
//ParentClass_B.java package pk01; public class ParentClass_B{ static void say(){//アクセス修飾子がデフォルト System.out.println("ParentClass_B"); } }
//ChaildClass_B.java package pk02; import pk01.ParentClass_B; class ChaildClass_B extends ParentClass_B{ public static void main(String[] args){ System.out.println("main method."); say();//アクセスできない } }
ws>javac pk02/ChaildClass_B.java pk02\ChaildClass_B.java:8: エラー: シンボルを見つけられません say(); ^ シンボル: メソッド say() 場所: クラス ChaildClass_B エラー1個