- 以下是针对成员变量作用域的对比。
- 以下修饰符只能修饰成员变量,不能修饰局部变量。因为局部变量本身就只能被方法内部使用,所以添加修饰符没有意义。
- private和protected不能修饰外部类,只有public、final、abstract可以修饰外部类
作用域与可见性 | 当前类 | 同一package | 子类 | 其他package |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
public:表示该成员变量或方法对所有类或对象都是可见的,所有类或对象都可以直接访问。
protected:表明成员变量或方法对该类自身,与它在同一个包中的其它类,在其它包中的该类的子类都可见。
default:表明该成员变量或方法只有自己和与其位于同一包内的类可见。若父类与子类在同一包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类位于不同的package内,则没有访问权限。
private:表明成员变量或方法是私有的,只有当前类对其局域访问权限,除此之外其他类(包括子类)或者对象都没有访问权限。