赞
踩
Java 中提供了 3 个访问修饰符:private、protected、public,分别代表了 3 个不同的访问控制级别。另外还有一个不加任何 关键字 的访问控制级别,共 4 种访问控制级别。
Java 访问修饰符 public、protected、 (缺省)、 private置于 类的成员 定义前,用来限定对象对该类成员的访问权限。
private: 当前类访问权限,若某个类中的成员(成员变量、方法、构造器等)使用其来修饰,则这个成员只能在当前类的内部被访问,并且类和接口不能声明为 private。
外部类只有两种访问控制级别:public 和默认。不可以使用 private 以及 protected 修饰。
这是因为在 Java 中没有「子包」或者「包继承」的概念,将类声明为私有和包私有效果是一样的。----- Why can a class not be defined as protected?
推荐阅读:Controlling Access to Members of a Class
default: 包访问权限,若某个类中的成员(成员变量、方法、构造器等)不使用任何访问修饰符来修饰,则 default 访问控制的成员或外部类可以被相同包下的其他类访问。
protected: 子类访问权限,若某个类中的成员(成员变量、方法、构造器等)使用其来修饰,则这个成员既可以被同一个包中的其它类访问,也可以被不同包中的子类访问。
- 基类的 protected 成员是包内可见的,并且对子类可见;
- 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。
public: 公共访问权限,若某个类中的成员(成员变量、方法、构造器等)使用其来修饰,或者一个外部类使用其修饰,在这个成员或外部类就可以被所有类访问。
附个表格:
修饰符 | 当前类内部 | 同一个包 | 同包子类 | 不同包子类 | 同一个工程 |
---|---|---|---|---|---|
public | √ | √ | √ | √ | √ |
protected | √ | √ | √ | √/× | × |
default | √ | √ | √ | × | × |
private | √ | × | × | × | × |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。