java访问控制修饰符
2018-12-06 本文已影响8人
平凡的鱼仔
修饰符 | 当前类 | 同包 | 子孙类(同包) | 子孙类(不同包) | 其它包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
- public:所有类可见,不管同包不同包。
被声明为public的类、方法、构造方法和接口都能被任何其它类访问。
如果几个相互访问的public类分布在不同的包中,通过导入所在的包便可。类的公有方法和变量都被子类继承。 - protected:同包内的所有类和同包不同包的所有子类可见。不能修饰外部类
(1) 子类和基类在同一个包内:被声明被protected的方法、变量、构造器能被同一包内的所有类访问
(2) 子类和基类不在同一个包内:在子类中,子类能访问从基类继承来的protected方法,但不能访问基类实例的protected方法
接口和接口的成员变量、成员方法都不能用protected修饰 - default(缺省,什么也不写): 同包的所有类可见
接口的变量默认情况下隐式声明为public static final,接口默认情况下声明为public。 - private: 当前类可见。不能修饰外部类