当学习Java的时候我们必须明白以下这四个关键字:public、private、protected以及default,它们被称为访问修饰符。一个访问修饰符约束着一个类对于其他类的构建器、数据成员和方法的访问。
1 default访问修饰符
当我们没有指定任何访问修饰符的时候,它被称为默认修饰符。这个修饰符的范围仅限于软件包。意思是在一个软件包中如果有default修饰符的类,其他的类只能在这个软件包中访问这个类。这个软件包以外的任何外部类都不能访问它。同样的,如果一个类中有方法或数据成员使用default修饰,那么它对于其他包中的类应该是不可见的。
- default数据成员和方法只能被该类的同一个软件包的其他类访问
- 如果该类有default的构建函数,那么只有软件包内的其他类才能创建该类的对象
2 private访问修饰符
private修饰符的作用范围只限于类本身
- private数据成员和方法只能在本类中是可访问的
- 类和接口不能被定义为private
- 如果一个类有private的构造器,那么不能在这个类的外部创建该类的对象
3 protected访问修饰符
- proteced的数据成员和方法只能通过相同包下的类和任何包下的子类进行访问。也可以说,protected访问修饰符与default相似,唯一的不同是它在子类中是可见的(可以访问的)。
- 类不能声明成protected,即不能使用protected来修饰类
- 这个访问修饰符通常用于父子关系中
4 public访问修饰符
- 通过public定义的成员、方法和类能够在任何地方被访问
- 这个修饰符没有作任何的访问约束
5 总结图示
类自身 | 同包下其他类 | 同包下的子类 | 不同包下的子类 | 外部类 | |
public | Yes | Yes | Yes | Yes | Yes |
protected | Yes | Yes | Yes | Yes | No |
default | Yes | Yes | Yes | No | No |
private | Yes | No | No | No | No |