Luffy1
@Luffy1
Студент, Junior .NET programmer

Не работает запрет на переопределение методов. Почему?

Есть такой код, где я переопределяю методы:
class Program
  {
    static void Main(string[] args)
    {
      Person p1 = new Person("Bill");
      p1.Display(); // вызов метода Display из класса Person

      Employee p2 = new Employee("Tom", "Microsoft");
      p2.Display(); // вызов метода Display из класса Employee

      Person p3 = new Employee("Bill", "Microsoft");
      p3.Display(); 

      Console.ReadKey();
    }
  }
  class Person
  {
    public string Name { get; set; }
    public Person(string name)
    {
      Name = name;
    }
    public virtual void Display()
    {
      Console.WriteLine(Name);
    }
  }
  class Employee : Person
  {
    public string Company { get; set; }

    public Employee(string name, string company)
                : base(name)
    {
      Company = company;
    }

    public override void Display()
    {
      Console.WriteLine($"{Name} работает в {Company}");
    }
  }

Вывод:

Bill
Tom работает в Microsoft
Bill работает в Microsoft

Пытаюсь поставить запрет на переопределение:
class Program
  {
    static void Main(string[] args)
    {
      Person p1 = new Person("Bill");
      p1.Display(); // вызов метода Display из класса Person

      Employee p2 = new Employee("Tom", "Microsoft");
      p2.Display(); // вызов метода Display из класса Employee

      Person p3 = new Employee("Bill", "Microsoft");
      p3.Display(); 

      Console.ReadKey();
    }
  }
  class Person
  {
    public string Name { get; set; }
    public Person(string name)
    {
      Name = name;
    }
    public virtual void Display()
    {
      Console.WriteLine(Name);
    }
  }
  class Employee : Person
  {
    public string Company { get; set; }

    public Employee(string name, string company)
                : base(name)
    {
      Company = company;
    }

    public override <b><i>sealed </i></b> void Display()
    {
      Console.WriteLine($"{Name} работает в {Company}");
    }
  }

Вывод:

Bill
Tom работает в Microsoft
Bill работает в Microsoft

Хотя, по идее, должен быть:

Bill
Tom работает в Microsoft
Bill

Ибо я поставил запрет на переопределение.
Либо оно неправильно работает, либо я что-то неправильно делаю, либо я не очень понимаю, как это работает и/или должно работать.
Объясните, пожалуйста=)
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Luffy1
@Luffy1 Автор вопроса
Студент, Junior .NET programmer
Теперь понял, почему не работает, просто туплю:
60fdab22ec3c4423770459.jpeg
60fdab3293d18197304962.png
60fdab7a0d0fd050061824.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Вы не так поняли. Запрет на переопределение в вашем случае будет значить что в классе унаследованном от Person, нельзя будет написать override.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы