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;
	}

}

发布了37 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42755868/article/details/104831340