Полиморфизм - вызов функции базового класса - PullRequest
5 голосов
/ 28 октября 2011

Можно ли вызвать функцию базового класса без изменения как базового, так и производного классов?

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

Вывод: Employee 1000 6000

Как вызвать метод getSalary () сотрудника дляem объект?

Ответы [ 3 ]

6 голосов
/ 28 октября 2011

Вы не можете.Вы можете добавить такой метод к Manager, если хотите:

public int getEmployeeSalary()
{
    return super.getSalary();
}
0 голосов
/ 28 октября 2011

Вы можете вызвать метод суперкласса из подкласса.

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

    public int getSalary() {
    return super.getSalary();
    }
}
0 голосов
/ 28 октября 2011

Вместо этого используйте объект Employee:

Employee em = new Employee();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...