アクセス制御子public、protected、friendly、protectedの役割ドメイン
2938 ワード
package com.scope;
public class Father {
public int publicNumber =1;
protected int protectedNumber = 2;
int friendlyNumber =3;// friendly
private int privateNumber =4;
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);
System.out.println("privateNumber = "+privateNumber);
}
}
package com.scope;
public class Son extends Father{
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);
System.out.println("privateNumber = "+privateNumber);//
}
}
package com.scope1;
import com.scope.Father;
public class Daughter extends Father{
public void printNumber(){
System.out.println("publicNumber = "+publicNumber);
System.out.println("protectedNumber = "+protectedNumber);
System.out.println("friendlyNumber = "+friendlyNumber);//
System.out.println("privateNumber = "+privateNumber);//
}
}
package com.scope;
public class TestFather {
Father father = new Father();
public void printNumber(){
System.out.println("publicNumber = "+father.publicNumber);
System.out.println("protectedNumber = "+father.protectedNumber);
System.out.println("friendlyNumber = "+father.friendlyNumber);
System.out.println("privateNumber = "+father.privateNumber);//
}
}
package com.scope1;
import com.scope.Father;
public class TestFather1 {
Father father = new Father();
public void printNumber(){
System.out.println("publicNumber = "+father.publicNumber);
System.out.println("protectedNumber = "+father.protectedNumber);//
System.out.println("friendlyNumber = "+father.friendlyNumber);//
System.out.println("privateNumber = "+father.privateNumber);//
}
}
結論:
publicの役割ドメインは、現在のクラス、サブクラス(同じパッケージまたは異なるパッケージでも可)、同じパッケージのクラス、異なるパッケージのクラスです.
protectedの役割ドメインは、現在のクラス、サブクラス(同じパッケージまたは異なるパッケージでも可)、同じパッケージのクラスです.
friendlyの役割ドメインは、現在のクラス、同じパッケージのサブクラス(異なるパッケージのサブクラスはアクセスできません)です.
privateの役割ドメインは、現在のクラスです.