Поле, доступное потомкам в C#
Поле со словом protected видно в своем классе
и в потомках. Снаружи класса к нему не обратиться.
Запишем защищенное поле name и обратимся к нему
из метода Employee:
class User {
public virtual void SetName(string name) {
this.name = name;
}
public string GetName() {
return name;
}
protected string name = "";
}
class Employee : User {
public override void SetName(string name) {
if (name.Length > 0) {
this.name = name;
}
}
}
Запись имени через метод потомка:
Employee employee = new Employee();
employee.SetName("john");
// employee.name; // ошибка: name protected
Console.WriteLine(employee.GetName());
Перепишите класс User так,
чтобы поле name было видно в потомке, но не снаружи,
и исправьте SetName в Employee,
чтобы он записывал имя напрямую в поле базы.