Java protected的用法(附带实例)
在 Java 中,有时你希望一个方法仅限于子类使用,或者只允许子类方法访问超类的某个实例变量。为此,需要将类的特性声明为 protected。
例如,假设超类 Employee 将实例变量 salary 声明为 protected,而不是 private:
当然,应当谨慎使用受保护的字段。因为一旦提供了受保护的字段,就无法在不破坏正在使用它们的类的情况下删除它们。
其实,受保护的方法和受保护的构造器更常见。例如,Object 类的 clone 方法是受保护的,因为它使用起来有些困难。
注意在 Java 中,protected 授予了包级别的访问权限,它只保护来自其他包的访问。
例如,假设超类 Employee 将实例变量 salary 声明为 protected,而不是 private:
package com.biancheng.employees; public class Employee { protected double salary; ... }这样,与 Employee 在同一个包中的所有类都可以访问此字段。现在考虑来自不同包的子类:
package com.biancheng.managers; import com.biancheng.employees.Employee; public class Manager extends Employee { ... public double getSalary() { return salary + bonus; // OK to access protected salary variable } }Manager 类的方法只能查看 Manager 对象的 salary 变量,而不能查看其他 Employee 对象的 salary 变量。设置此限制是为了防止通过创建子类来访问受保护的特性,避免滥用受保护的机制。
当然,应当谨慎使用受保护的字段。因为一旦提供了受保护的字段,就无法在不破坏正在使用它们的类的情况下删除它们。
其实,受保护的方法和受保护的构造器更常见。例如,Object 类的 clone 方法是受保护的,因为它使用起来有些困难。
注意在 Java 中,protected 授予了包级别的访问权限,它只保护来自其他包的访问。