多态性 - 调用基类功能

时间:2011-10-28 16:47:53

标签: java inheritance polymorphism

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

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());
    }
}

输出:      雇员      1000      6000

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

3 个答案:

答案 0 :(得分:6)

你做不到。如果您愿意,可以将此类方法添加到Manager

public int getEmployeeSalary()
{
    return super.getSalary();
}

答案 1 :(得分:0)

改为使用Employee对象:

Employee em = new Employee();

答案 2 :(得分:0)

您可以从子类中调用超类的方法。

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

    public int getSalary() {
    return super.getSalary();
    }
}