アクセス制御子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の役割ドメインは、現在のクラスです.