java中访问控制修饰符的详解和示例
Java中的四个访问控制修饰符
简述
在 Java 中共有四个:
public —— 对外部完全可见
protected —— 对本包和所有子类可见
默认(不需要修饰符)—— 对本包可见
private —— 仅对本类可见
从上到下,访问控制权限依次降低增加,public 的开放程度最高。
简言之就是,public 全开放,protected 对本包和子类(不论是不是在本包中)开放,默认的只对本包开放(不论是不是子类),private 仅对本类开放(只有定义它的类内部才能够使用,非常不开放)。
建议在定义每个类的私有字段,也就是成员变量时使用 private 修饰符,这样才能够确保类的封装性。
实例演示
定义两个包:A 包和 B 包。
A 包中有类:aFather 、aClass、aSon;B 包中有类:bClass、bSon
定义类:aSon、bSon 是 aFather 的子类。具体如下
包A
aFather.java
定义了一个父类 aFather,和各实例字段,如下:
aClass.java
aClass 为 A 包中的一个普通类。
显然在同一包中,除了private ,都可以正常访问父类的Public、Protected 和默认定义的实例字段。
aSon.java
aSon 为 A 包(同一包)中的 aFather 类的子类
同样,同一包中的子类可以正常访问父类的Public、Protected、默认定义 的实例字段。
包B
bClass.java
bClass 为 B 包中的一个普通类。
可以看出,非aFather子类的类:bClass 只能访问A包中类的 Public 的实例字段。
bSon.java
bSon 为 B 包中的,aFather 类(A 包中)的子类。
而B包中的bSon类 是A包中aFather类的子类,可以访问父类(超类)中由Public、Protected定义的实例字段,其他的无法访问。
由此看出,开头所说:
public —— 对外部完全可见
protected —— 对本包和所有子类可见
默认(不需要修饰符)—— 对本包可见
private —— 仅对本类可见
便更易于理解了!