public:
具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。
protected:
主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西
default:
有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
private:
访问权限仅限于类的内部,是一种封装的体现,例如,大多数成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。
public | protected | default | private | |
同一类中 | √ | √ | √ | √ |
同一包中 | √ | √ | √ | |
子类 | √ | √ | ||
不同包中 | √ |
补充:不在同一包的子类可以访问父类protected修饰的数据成员
包之间的访问:
- 被访问的包中的类权限必须是public的;
- 类中的成员权限:public或者protected;
- protected是为其他包中的子类提供的一种权限。