小编Cut*_*ner的帖子

子类的对象可以访问另一个子类的另一个对象的受保护字段吗?

我从Core Java,第I卷 - 基础知识(第8版)>第5章:继承>'受保护的访问'一节(页221)一书中学到了以下内容.

但是,有时候,您只想将方法限制为子类,或者不太常见,允许子类方法访问超类字段.在这种情况下,您将类功能声明为protected.例如,如果超类Employee将hireDay字段声明为protected而不是private,则Manager方法可以直接访问它.

但是,Manager类方法只能查看Manager对象的hireDay字段,而不能查看其他Employee对象.这种限制是为了使您不能滥用受保护机制并形​​成子类只是为了获得对受保护字段的访问权限.

我编写了以下代码来测试它.

class Employee
{
    protected String name;

    public Employee(String name) {
        this.name = name;
    }
}

class Manager extends Employee
{
    public Manager(String name) {
        super(name);
    }

    public void peekName(Employee e) {
        System.out.println("name: " + e.name);
    }
}

class Executive extends Employee
{
    public Executive(String name) {
        super(name);
    }
}

public class TestProtectedAccess
{
    public static void main(String[] args) {
        Employee e = new Employee("Alice Employee");
        Manager m = new Manager("Bob Manager"); …
Run Code Online (Sandbox Code Playgroud)

java inheritance protected

5
推荐指数
1
解决办法
828
查看次数

标签 统计

inheritance ×1

java ×1

protected ×1