Файл: Полиморфизм. Виртуальные методы Преподаватель Гаджимагомедова С. Р.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.03.2024

Просмотров: 10

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Тема: Полиморфизм. Виртуальные методы

Преподаватель: Гаджимагомедова С.Р.

Принципы ООП

  • Наследование – это возможность создавать новые (производные) классы на основе уже существующих (базовых).
  • Инкапсуляция -это механизм сокрытия внутренней структуры объекта и предоставление доступа к нему через интерфейсы.
  • Полиморфизм – это возможность у методов с одинаковыми именами иметь различную реализацию.

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

  • Виртуальный метод – это метод, который может быть переопределен в производном классе.
  • Переопределение метода – это изменение его реализации в классе-наследнике. Переопределив метод, он будет работать по-разному в базовом классе и классе наследнике, имея при этом одно и то же имя и тип метода и аргументы.

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

  • Виртуальный метод объявляется в базовом классе при помощи ключевого слова virtual:
  • [модификаторы] virtual [тип] [имя метода] ([аргументы])

    {

    // тело метода

    }

  • Статический метод не может быть виртуальным.

Объявление переопределенного метода

[модификаторы] override [тип] [имя метода] ([аргументы])

{

// новое тело метода }

Пример:

// создаем базовый класс Фигура

class Shape

{

// создаем виртуальный метод Draw

public virtual void Draw()

{

Console.WriteLine("Рисуем базовый объект");

}

}

// создаем производный класс Окружность

class Circle: Shape

{

public override void Draw()

{ // переопределяем метод Draw

Console.WriteLine("Рисуем Окружность");

}

}

 Задание: Создать класс Прямоугольник (Rectangle)

Пример (продолжение)

// Создание объектов и вызов метода Draw()

class Program

{

static void Main(string[] args)

{

Shape c = new Circle();

c.Draw();

Shape r = new Rectangle();


r.Draw();

Console.ReadKey();

}

}

ВЫЗОВ БАЗОВОГО МЕТОДА

  • Базовый метод можно вызывать из производного при помощи ключевого слова base. Например, в классе Circle добавим:
  • public override void Draw()

    {

    base.Draw();

    }

    Задание: добавить вызов базового метода Draw() в переопределенном методе класса Rectangle

ВОПРОСЫ:

  • Дайте определение понятию «полиморфизм»?
  • Какой метод называют виртуальным? C помощью какого ключевого слова объявляется виртуальный метод?
  • Какой метод называют переопределенным? C помощью какого ключевого слова переопределенный метод объявляется?
  • Каким образом в производном классе можно вызвать метод базового класса?

СПАСИБО ЗА ВНИМАНИЕ!