Разрешение переопределения в C#
По умолчанию метод базы ведет себя как обычный унаследованный член: потомок может добавить метод с тем же именем, но это будет отдельная версия, а не замена базовой.
Когда база должна явно разрешить замену,
метод помечают ключевым словом virtual.
Так компилятор фиксирует: у потомка может
появиться новая реализация вместо этой.
Сама замена оформляется отдельно, в классе потомка.
Запишем базовый класс с приветствием, которое потомок сможет заменить, и пустого потомка:
class User {
public virtual void Greet() {
Console.WriteLine("user");
}
}
class Student : User {
}
Объект потомка пока использует реализацию базы:
Student student = new Student();
student.Greet();
Сделайте классы User и Employee.
В базе опишите метод Role, который
выводит строку "user", так чтобы потомок
мог подставить свою реализацию.