Есть такой код, где я переопределяю методы:
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
Ибо я поставил запрет на переопределение.
Либо оно неправильно работает, либо я что-то неправильно делаю, либо я не очень понимаю, как это работает и/или должно работать.
Объясните, пожалуйста=)