访问权限控制的等级:public > protected > 包访问权限 > private
其中类的访问权限控制只有两种 public 和 包访问权限(即什么都不写的)
public:紧跟的成员被声明对每个人都是可用的,赋予所有类访问权限(无论同一包内还是其他包,这是与protected不同的地方,protected限制的是派生类)。
包访问权限:相同包内的其他类可用访问,不同包不能访问(对于不同包的所有类,该成员是private的)。继承的时候只能在同一个包内继承。
protected:赋予派生类访问权限而不是所有类(在同一个包内或者不同包内均可继承),也提供包访问权限(相同包内的其他类可以访问该元素)。
private:除了包含该成员的类之外,其他任何类都无法访问这个成员。
为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public;对数据成员提供getr/set方法
类的访问权限:public 和 包访问权限
每个文件都只能有一个public类,且类的名称必须完全与文件名相匹配。
如果设置为包访问权限的话,只是其他包内的任何类不能再创建该类的对象,说其他包内的类不能访问该类,而相同包内可以。
| 同一个类 | 同一个包(无论子类还是非子类) | 不同包的子类 | 不同包的非子类 |
Private | √ | | | |
Default | √ | √ | | |
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |