在java中,成员变量主要有4中作用域,他们区别如下表:
作用域可见性 | 当前类 | 同一package | 子类 | 其他package |
---|---|---|---|---|
public | ✔ | ✔ | ✔ | ✔ |
private | ✔ | ✘ | ✘ | ✘ |
protected | ✔ | ✔ | ✔ | ✘ |
default | ✔ | ✔ | ✘ | ✘ |
- public:表明该成员变量或者方法对所有类的对象都是可见的,所有类的对象都可以直接访问
- private:表明该成员变量或者方法是私有的,只有当前类对其具有访问权限,除此之外的其他类或者对象都没有访问权限。
- protected:表明该成员变量或者方法对该类自身,与它在同一个包中的其他类,在其他包中的子类都可见。
- default:表明该成员变量或者方法只有自己和与其位于同一包内的类可见。若父类和子类位于同一个包内,则子类对父类的default成员变量或者方法都有访问权限;若父类和子类不在同一个包内,则没有访问权限。
注意:这些修饰符只能修饰成员变量,不能修饰局部变量。private和protected不能用来修饰外部类(只有public,abstract或final能用来修饰外部类),但是它们可以用来修饰内部类。