一道面试题:
java访问修饰符分类?
default private public protected 四种
四种访问修饰符可以访问,不可以访问情况分析?
访问控制分为四种级别:
(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类均可以访问;
(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问;
(3)default: 如果一个类、类属变量及方法没有用任何修饰符,则其访问权限为默认权限,只认包。
(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同的包 |
公开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ | 不同包下类不能访问 不同包下子类可以访问 |
默认 | default | √ | √ | 不同包子类不能访问, 同包子类可以访问 | -- |
私有 | private | √ | -- | -- | -- |
总结:
本类无论用何修饰符都可以访问包括private,不再分析。
public: 任何情况下都可以访问。
protected:同包下类可以访问,所有子类可以访问,所以只有不同包普通类不能访问。
default:同包下可以访问,同包下子类可以访问,只要不同包,普通类和子类都不能访问。
private:除了当前类都不能访问。