4个
public /protected/默认/private
访问控制修饰符
public和private
- private修饰的成员变量和方法仅仅只能在本类中调用;
- public修饰的成员变量和方法可以在任何地方调用。
- public修饰的内容是对外提供可以被调用的功能,需要相对稳定;
- private修饰的内容是对内实现的封装,如果“公开“会增加维护的成本。
public class Point{
private int x;
private int y;
Point(int x,int y){...}
public int distance(Point p){...}
}
... ... ...
Point p1 = new Point(1,2);
Point p2 = new Point(3,4);
p1.x = 100
//The field Point.x is not visible
int d = p1.distance(p2);
... ... ...
protected和默认访问控制
- 用protected修饰的成员变量和方法可以被子类及同一个包中的类使用。
- 默认访问控制即不书写任何访问控制修饰符。默认访问控制的成员变量和方法可以被同一个包中的类调用
访问控制符修饰类
- 对于类的修饰可以使用public和默认方式。public修饰的类可以被任何一个类使用;默认访问控制的类只可以被同一个包中的类使用。
- protected和private可以用于修饰内部类。
访问控制符修饰成员
- 访问控制符修饰成员时的访问权限如下表所示
修饰符 | 本类 | 同一个包中的类 | 子类 | 其他类 |
---|---|---|---|---|
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
protected | 可以访问 | 可以访问 | 可以访问 | 不能访问 |
默认 | 可以访问 | 可以访问 | 不能访问 | 不能访问 |
private | 可以访问 | 不能访问 | 不能访问 | 不能访问 |