多态性 - 调用基类功能

Joh*_*ohn 5 java polymorphism inheritance

是否可以在不修改基类和派生类的情况下调用基类函数?

class Employee {
    public String getName() {
        return "Employee";
    }

    public int getSalary() {
        return 5000;
    }
}

class Manager extends Employee {
    public int getBonus() {
        return 1000;
    }

    public int getSalary() {
        return 6000;
    }
}

class Test {
    public static void main(String[] args) {
        Employee em = new Manager();
        System.out.println(em.getName());
        // System.out.println(em.getBonus());
        System.out.println(((Manager) em).getBonus());
        System.out.println(em.getSalary());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:员工1000 6000

如何在em对象上调用Employee的getSalary()方法?

Ern*_*ill 6

你不能.如果您愿意,可以添加这样的方法Manager:

public int getEmployeeSalary()
{
    return super.getSalary();
}
Run Code Online (Sandbox Code Playgroud)

  • *我不; 原始海报想要获得该方法返回的值.也许`Employee`和`Manager`只是这里的示例类,我们实际上是用更一般的术语来讨论调用重写方法. (2认同)