其他分享
首页 > 其他分享> > 权限限定符详讲(private,default,protected,public)

权限限定符详讲(private,default,protected,public)

作者:互联网

Java中的权限修饰符主要包括private,protected,public,default是默认权限修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问.
我们分为三部分进行介绍.

一:先用表格来看一下:
在这里插入图片描述二.这里用文字进行介绍:
1.private
如果一个类的成员变量或者成员方法被private修饰,则该成员变量只能在本类中使用,在子类中是不可见的,并且对其他包的类也是不可见的.
2.public
如果一个类的成员变量或者成员方法被public修饰,那么除了在本类中可以使用这些数据外,还可以在子类和其他包的类中使用.
3.protected
如果一个类的成员变量或者成员方法被protected修饰,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法.
4.default
默认修饰符,如果一个类的成员变量或者成员方法没有被任何修饰符修饰,那么就会默认使用default修饰符.只能在本包中类访问.

从上面可以看出,如果一个类的访问权限是被设置为private,这个类将隐藏其内的所有数据,以免用户直接访问它.如果需要使类中的数据被子类或者其他包中的类使用,可以将这个类设置为public访问权限.如果父类不允许通过继承产生的子类访问他的成员变量,那么必须使用private声明父类的这个成员变量.
三.用代码来理解

// extend01包中.
public class A {
 	private int a;
 	protected int b;
 	public int c;
 	int d; 
}
// extend01包中.
// 同包中的子类.
public class D extends A{
 	public void method(){
 		// super.a = 10; 	编译报错,父类private成员在相同包子类中不可见
 		super.b = 20; // 父类中protected成员在相同包子类中可以直接访问
 		super.c = 30; // 父类中public成员在相同包子类中可以直接访问
		super.d = 40; // 父类中默认访问权限修饰的成员在相同包子类中可以直接访问
 	}
 }
 
// extend02包中.
// 不同包中的子类.
public class C extends A {
 	public void method(){
    // super.a = 10;
    super.b = 20; // 父类中protected修饰的成员在不同包子类中可以直接访问
 	super.c = 30; // 父类中public修饰的成员在不同包子类中可以直接访问
 	//super.d = 40; // 父类中默认访问权限修饰的成员在不同包子类中不能直接访问
 	}
}
 
// extend02包中
// 不同包中的类
public class TestC {
 	public static void main(String[] args) {
 		C c = new C();
 		c.method();
 		// System.out.println(c.a); // 编译报错,父类中private成员在不同包其他类中不可见
 		// System.out.println(c.b); // 父类中protected成员在不同包其他类中不能直接访问
		System.out.println(c.c); // 父类中public成员在不同包其他类中可以直接访问
 		// System.out.println(c.d); // 父类中默认访问权限修饰的成员在不同包其他类中不能直接访问
	}
}

标签:详讲,父类,default,成员,private,访问,限定符,public,类中
来源: https://blog.csdn.net/weixin_47278183/article/details/120470153