Презентация на тему: Абстрактные классы

Абстрактные классы
Абстрактные классы
Абстрактные классы
Абстрактные классы
Абстрактные классы
Проверка класса объекта
Приведение типов классов
1/7
Средняя оценка: 4.2/5 (всего оценок: 50)
Код скопирован в буфер обмена
Скачать (77 Кб)
1

Первый слайд презентации: Абстрактные классы

В задачах программирования часто возникает необходимость создания класса, свойства и методы которого требуется передать его наследникам. При этом сам базовый класс может не предполагать создания собственных объектов-представителей. В этом случае данный класс объявляется как абстрактный через ключевое слово abstract. Пример объявления абстрактного класса фигуры: abstract class Figure { public int Left { get; set; } / / Позиция фигуры слева public int Top { get; set; } / / Позиция фигуры сверху public void Draw() / / Отрисовка фигуры { } }

Изображение слайда
2

Слайд 2: Абстрактные классы

Попытка создания представителя абстрактного класса приведёт к ошибке: Figure f = new Figure(); / / Ошибка Создание объектов возможно только от наследников абстрактного класса, получивших от своего предка его свойства и методы. В следующем примере для создания объектов-фигур на основе абстрактного класса объявляются два класса-наследника.

Изображение слайда
3

Слайд 3: Абстрактные классы

class Rectangle : Figure { public int Width { get; set; } / / Ширина прямоугольника public int Height { get; set; } / / Высота прямоугольника public override void Draw() / / Переопределяем метод { Console.WriteLine (" Это прямоугольник "); } } class Circle : Figure { public int Radius { get; set; } / / Радиус окружности public override void Draw() / / Переопределяем метод { Console.WriteLine (" Это окружность "); } }

Изображение слайда
4

Слайд 4: Абстрактные классы

Для абстрактного класса допускается объявление переменных, но не допускается их инициализация объектами данного класса. Однако можно создавать объекты для наследников абстрактного класса. При этом переменные, хранящие ссылку на эти объекты, могут являться переменными абстрактного класса-предка. Figure f; f = new Rectangle(); f.Draw (); / / Это прямоугольник f = new Circle(); f.Draw (); / / Это окружность Использование ключевого слова override при описании метода Draw в каждом классе избавило нас от необходимости приведения типов для классов. Благодаря полиморфизму, будет вызван метод того класса, которым была проинициализирована переменная f.

Изображение слайда
5

Слайд 5: Абстрактные классы

Абстрактными могут быть не только классы, но и отдельные методы. Это удобно, когда точно известно, что наследники будут переопределять метод предка. Например, заранее неизвестно, как отрисовывать фигуру-наследницу класса Figure. Поэтому в предке метод Draw можно объявить как абстрактный и без фигурных скобок: abstract class Figure { public int Left { get; set; } public int Top { get; set; } abstract public void Draw(); / / Абстрактный метод } В этом случае любой класс-наследник обязан реализовать метод Draw или тоже стать абстрактным (иначе возникнет ошибка). Примечание. Если класс имеет хотя бы один абстрактный метод (в том числе наследованный, но нереализованный), то такой класс тоже должен быть абстрактным.

Изображение слайда
6

Слайд 6: Проверка класса объекта

Иногда требуется определить, является ли объект представителем определенного класса. Для решения этой задачи используется ключевое слово is. Figure f = new Circle(); if (f is Circle) Console.WriteLine (" Это окружность. "); Несмотря на то, что переменная f была объявлена как Figure, при помощи is удалось определить, что в неё была записана ссылка на объект, представляющий класс Circle.

Изображение слайда
7

Последний слайд презентации: Абстрактные классы: Приведение типов классов

Для того, чтобы среда.NET воспринимала созданный объект как экземпляр определенного класса, используется приведение типов классов: Figure f = new Circle(); Circle c = (Circle) f; Также для приведения типов можно воспользоваться ключевым словом as : Figure f = new Circle(); Circle c = f as Circle; В обоих примерах указывается, что с объектом, ссылка на который записана в переменную f, следует работать как с экземпляром класса Circle. Чтобы не пользоваться этой записью постоянно, создается отдельная переменная c.

Изображение слайда