Java訪問修飾符private,default,protected,public的區分解釋

在這裏插入圖片描述 封裝的實現(訪問控制符的使用):
Java通過使用訪問控制符來控制那些細節需要封裝,那些細節需要暴露。
4種訪問控制符分別爲:private,default,protected,public,說明對象的封裝性,通過他們可以儘可能的將訪問權限放到最低,從而提高安全性。

修飾符 同一個類 同一個包 子類 所有類
private *
default * * (同包中的子類之所以可以訪問是因爲顯示同包)
protected * * *
public * * * *

說明:
1、 private表示私有,只可以自己的類中訪問
2、 default表示沒有修飾符號,同一個包裏的類可以訪問
3、 protected表示受保護的,同包的類和其他包中的子類也可以訪問
4、 public表示公開的,所有包中所有類可以訪問
注意:訪問方式分爲“類名.”或者“實例.”的形式,具體的使用參照具體情況。(一般用“實例.”的形式,類名.一般是靜態成員和方法)

代碼區分

package com.it.package1;

public class ClassOne {
	
	private  int privateProp;
	
	 int defaultProp;
	
	 protected int protectedProp;
	
	 public int publicProp;
	
	
	void testSameClass(){
		privateProp = 0;
		
		defaultProp = 0;
		
		protectedProp = 0;
		
		publicProp = 0;
	}
	

}
package com.it.package1;

public class ClassOneStatic {
	
	private static int privateProp;
	
	static int defaultProp;
	
	static protected int protectedProp;
	
	static public int publicProp;
	
	
	void testSameClass(){
		privateProp = 0;
		
		defaultProp = 0;
		
		protectedProp = 0;
		
		publicProp = 0;
	}
	

}

package com.it.package1;

public class ClassTwo{
	
	void testdifferentClass() {
//		new ClassOne().privateProp;
		new ClassOne().defaultProp = 1;
		new ClassOne().protectedProp = 1;
		new ClassOne().publicProp = 1;
		
//		ClassOneStatic.privateProp;
		ClassOneStatic.defaultProp = 1;
		ClassOneStatic.protectedProp = 1;
		ClassOneStatic.publicProp = 1;
		
		
	}

}
package com.it.package1;

public class ClassChild extends ClassOne{
	
	void testChild() {
//		privateProp = 1 ;
		defaultProp = 1;
		protectedProp = 1;
		publicProp = 1;
	}

}

package com.it.package2;

import com.it.package1.ClassOne;
import com.it.package1.ClassOneStatic;

public class ClassFour {
	
	void testDifferentPackage(){
//		new ClassOne().privateProp;
//		new ClassOne().defaultProp = 1;
//		new ClassOne().protectedProp = 1;
		new ClassOne().publicProp = 1;
		
//		ClassOneStatic.privateProp = 1;
//		ClassOneStatic.defaultProp = 1;
//		ClassOneStatic.protectedProp = 1;
		ClassOneStatic.publicProp = 1;
	}

}

package com.it.package2;

import com.it.package1.ClassOneStatic;

public class ClassChild extends ClassOneStatic {
	
	void testdifferentPackageChild() {
//		ClassOneStatic.privateProp = 1;
//		ClassOneStatic.defaultProp = 1;
		ClassOneStatic.protectedProp = 1;
		ClassOneStatic.publicProp  = 1;
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章