В C# переопределение метода — это функция, которая позволяет производному классу предоставлять собственную реализацию метода, унаследованного от базового класса. Переопределив метод, вы можете изменить поведение метода в производном классе, сохранив при этом ту же сигнатуру метода. Вот несколько важных моментов, которые следует учитывать при переопределении методов в классах C#:
-
Сигнатура метода: переопределяющий метод в производном классе должен иметь то же имя, тип возвращаемого значения и список параметров, что и метод базового класса.
-
Модификаторы доступа. Модификатор доступа переопределяющего метода в производном классе должен быть таким же или более доступным, чем метод базового класса. Например, если метод базового класса объявлен как общедоступный, переопределяющий метод может быть общедоступным или защищенным.
-
Ключевые слова Virtual и Override. В базовом классе метод, который можно переопределить, должен быть объявлен с ключевым словом
virtual. В производном классе метод, который переопределяет метод базового класса, должен быть объявлен с ключевым словомoverride. -
Полиморфизм: переопределение метода — это фундаментальная концепция полиморфизма, позволяющая работать с объектами разных типов через общий интерфейс базового класса.
Вот пример, демонстрирующий переопределение метода в C#:
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("The cat meows.");
}
}
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
Animal dog = new Dog();
Animal cat = new Cat();
animal.MakeSound(); // Output: The animal makes a sound.
dog.MakeSound(); // Output: The dog barks.
cat.MakeSound(); // Output: The cat meows.
}
}