У меня есть 3 класса, два наследуют от 1:
public class Employee {
private virtual double getBonus() { ... }
private virtual double getSalary() { ... }
}
public class Nepotism : Employee {
private double getBonus() { ... }
}
public class Volunteer : Employee {
private double getSalary() { ... }
}
Так что вопрос в том, что иногда найдется Волонтер, который получит бонус за непотизм - есть ли какой-то способ написать конструкторы, позволяющие переопределитьвложив класс base следующим образом:
Employee Bill = new Volunteer(new Nepotism());
Я думаю что-то вроде:
public class Volunteer : Employee {
private Employee _nest;
public Volunteer(Employee nest)
: base() {
_nest = nest;
// now what?
}
}
В основном я хочу, чтобы некоторые объекты имели переопределения из обоих классов.
Я бы хотел избегать написания методов переопределения для проверки на наличие вложенных классов.
getSalary() {
return (nest != null) ? nest.salary : salary; // I want to avoid this if I can
}
Как я могу это сделать?Я на правильном пути?Я сошел с рельсов?