在Java中可以在声明类、成员变量和方法时,使用private、protected、public和默认的(即不加private、protected和public)4个权限修饰符对其进行修饰,以限制类及其成员的访问权限,下面分别介绍:
private修饰符
private修饰的成员变量和方法称为私有成员变量和方法,私有成员变量和方法只能在本类内部通过类的实例来访问,而不能在其他的类当中被访问。私有成员变量和私有方法不能被子类继承。 private和final修饰的成员变量和方法的区别在于private修饰的成员变量和方法即不能在其他类中访问也不能被其他类继承,而final修饰的成员变量和方法只是不能被继承,如果希望能在其他类中被访问,在fianl前加上public就可以被其他类访问了。
默认修饰符
默认修饰符是指定在定义类、接口、方法等对象时不加任何修饰符,不加任何权限修饰符的成员变量和方法也称为友好的成员变量和方法,友好的成员变量和方法只能在本类或同一个包中的其他类中通过类的实例进行访问,也可以被同一个包中的其他类继承,但是不能被不同包中的其他类访问和继承。
potected修饰符
protected修饰的成员变量和方法也称为受保护的成员变量和方法,受保护的成员变量和方法可以在本类或同一个包中的其他类中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能被不同包中的其他类访问。
public修饰符
public修饰的成员变量和方法也称为公共的或全局的成员变量和方法,公共的或全局的成员变量和方法可以在本类、同一个包中的其他类或不同包中的其他类中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承。
综合权限修饰符的上述内容,对权限修饰符的可见性总结如下表所示。
| private | 默认的 | protected | public |
本类 | 可见 | 可见 | 可见 | 可见 |
相同包中的其他类 | 不可见 | 可见 | 可见 | 可见 |
不同包中的其他类 | 不可见 | 不可见 | 不可见 | 可见 |
相同包中的子类 | 不可见 | 可见 | 可见 | 可见 |
不同包中的子类 | 不可见 | 不可见 | 可见 | 可见 |