首页 > 编程笔记 > Java笔记 阅读:6

Java protected的用法(附带实例)

在 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 授予了包级别的访问权限,它只保护来自其他包的访问。

相关文章