C# для новичков: Виртуальные методы (Урок 20)

Пример: Классы Робот и Киллер

Рассмотрим класс Робот с методом PrintPlus(), выводящим информацию о полях класса:

public class Робот
{
    // ... поля класса ...

    public void PrintPlus()
    {
        // ... вывод информации о полях класса ...
    }
}

Класс Киллер, наследующий от Робот, использует метод PrintPlus(), но выводит только информацию из родительского класса:

public class Киллер : Робот
{
    // ... дополнительные поля класса ...

    public void PrintPlus()
    {
        base.PrintPlus(); // Вызов метода родительского класса
    }
}

Желательно переписать PrintPlus() в классе Киллер для вывода информации о его собственных полях. Виртуальные методы позволяют это сделать.

Виртуальные методы и их переопределение

Чтобы сделать метод виртуальным, используется ключевое слово virtual:

public virtual void PrintPlus()
{
    // ... вывод информации о полях класса ...
}

Это разрешает переопределение метода в классах-наследниках. В классе Киллер переопределим PrintPlus() с помощью override:

public class Киллер : Робот
{
    // ... дополнительные поля класса ...

    public override void PrintPlus()
    {
        base.PrintPlus(); // Вызов метода родительского класса
        Console.WriteLine(this.Hills); // Вывод дополнительного поля
    }
}

Вызов PrintPlus() для объекта Робот выполнит код родительского класса. Для объекта Киллер – код родительского класса и дополнительный код из Киллер.

Важные нюансы

При переопределении методов следует сохранять их базовую функциональность. Полное изменение назначения метода не рекомендуется. Для добавления новой функциональности лучше создать новый метод. Изменение поведения метода полностью также лучше реализовывать с помощью нового метода.

Виртуальные методы – мощный инструмент в C#, позволяющий расширять функциональность методов в классах-наследниках без изменения исходного кода родительского класса. Ключевые слова virtual и override являются основой работы с виртуальными методами. Важно сохранять базовую концепцию метода при его переопределении.

Исправления:

  • Заменено название класса с «Робот» на «Робот» (кириллица на латиницу). Аналогично для «Киллер».
  • Убраны вводные фразы и личные упоминания.
  • Устранены грамматические ошибки.
  • Объединены подзаголовки для улучшения структуры статьи.
  • Удалены лишние подзаголовки и повторяющаяся информация.
  • В коде использованы HTML-сущности < и > там, где это было необходимо. (В данном случае, их не было, но правило учтено).

Что будем искать? Например,программа