Файл: Полиморфизм. Виртуальные методы Преподаватель Гаджимагомедова С. Р.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.03.2024
Просмотров: 12
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Тема: Полиморфизм. Виртуальные методы
Преподаватель: Гаджимагомедова С.Р.
Объявление переопределенного метода
[модификаторы] override [тип] [имя метода] ([аргументы])
// создаем базовый класс Фигура
// создаем виртуальный метод Draw
Console.WriteLine("Рисуем базовый объект");
// создаем производный класс Окружность
{ // переопределяем метод Draw
Console.WriteLine("Рисуем Окружность");
Задание: Создать класс Прямоугольник (Rectangle)
// Создание объектов и вызов метода Draw()
Тема: Полиморфизм. Виртуальные методы
Преподаватель: Гаджимагомедова С.Р.
Принципы ООП
- Наследование – это возможность создавать новые (производные) классы на основе уже существующих (базовых).
- Инкапсуляция -это механизм сокрытия внутренней структуры объекта и предоставление доступа к нему через интерфейсы.
- Полиморфизм – это возможность у методов с одинаковыми именами иметь различную реализацию.
Виртуальный метод
- Виртуальный метод – это метод, который может быть переопределен в производном классе.
- Переопределение метода – это изменение его реализации в классе-наследнике. Переопределив метод, он будет работать по-разному в базовом классе и классе наследнике, имея при этом одно и то же имя и тип метода и аргументы.
Виртуальный метод
- Виртуальный метод объявляется в базовом классе при помощи ключевого слова 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 помощью какого ключевого слова переопределенный метод объявляется?
- Каким образом в производном классе можно вызвать метод базового класса?