访问控制
访问级别修饰符的作用是确定其他类是否可以使用特定字段或调用特定方法。 访问控制有两个级别:
- 在顶层级别 - public或package-private。
- 在成员级别 - public,private,protected或package-private。
释义:
- 顶层级别也就是类级别;
- package-private(包私有),也被认为default,它可以被省略,没有显式修饰符(no explicit modifier);
- public修饰符定义的类可以被所有类可见,没有修饰符(即default)定义的类只能在本包中可见;
- private修饰符定义的成员只能在本类中被访问;
- protected修饰符定义的成员只能在本包中被访问(package-private一样),还可以被其子类访问即使不在同一个包。
访问级别
下表显示了每个修饰符允许的成员【包括成员变量、成员方法、类变量(静态变量)、类方法(静态方法)】访问权限。
修饰符 | 本类 | 本包 | 子类 | 公共 |
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier(default) | Y | Y | N | N |
private | Y | N | N | N |
该成员 = 被修饰符指定的类(该类)成员
- 第一列表明,类始终可以访问自己的成员。
- 第二列表明,该类同包中的类是否可以访问该成员。
- 第三列表明,该类包外声明的子类是否可以访问该成员。
- 第四列表明,该类的该成员是否可以被所有类访问。
修饰符
默认访问修饰符 – 无关键字
- 默认访问修饰符可以修饰声明类、字段、方法等。
- 该修饰符声明的变量或方法被同包的类可见。
注意:接口中的字段隐式为public static final,接口中的方法默认为public。
私有访问修饰符 – private
- private声明的方法,变量和构造函数只能在本类中访问。
- private是最严格的访问控制级别,类和接口不能使用private修饰。
- 使用private修饰符是对象封装并隐藏自身数据结构的主要方式。
公共访问修饰符 – public
- 可以从任何其他类访问声明为public的类,方法,构造函数,接口等。
- 类的所有公共方法和变量都可以被其子类继承。
受保护的访问修饰符 – protected
- protected声明的变量,方法和构造函数只能由其他包中的子类或同包中的任何类访问。
- protected修饰符不能应用于类和接口。
- 接口中的方法和字段不能声明为protected。
- protected使子类有机会使用辅助方法或变量,同时防止非相关类尝试使用。
选择级别
如果其他程序员要使用你的类,为确保不发生滥用的错误,访问级别可以帮助你:
- 对特定的成员使用最严格的访问级别。 除非你有充分的理由不使用private。
- 避免除常量之外的公共public字段。公共字段将会传递到特定的实现中,并限制更改代码的灵活性。
- 在超类中声明为public的方法在所有子类中也必须都是public的。
- 在超类中声明为protected的方法在子类中必须为protected或者public,不能为private。
继续阅读
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。