Материал: 3 - Презентация

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Центр дистанционного обучения

Абстрактные классы

Про метод, переопределяющий абстрактный метод, говорят, что он реализует (implements) этот метод базового класса

В среде разработки:

Ctrl+O: override (переопределить)

конкретный (т.е. не абстрактный) метод

Ctrl+I: implement (реализовать)

абстрактный метод

online.mirea.ru

Центр дистанционного обучения

Абстрактные классы

В классе-предке:

final: модификатор для конкретного метода, нельзя переопределить в классахнаследниках

abstract: модификатор для абстрактного метода, должен быть реализован в классах-наследниках

online.mirea.ru

Центр дистанционного обучения

ОО проектирование

Мы хотим работать с разными объектами одного вида (например, геометрическими фигурами). Для этого мы создаем абстрактный базовый класс, определяющий свойства и методы всех фигур и наследуем от него конкретные классы, реализующие методы для конкретной фигуры. При этом конкретные классы обычно final, т.е. иерархия наследования имеет только два уровня.

online.mirea.ru

Центр дистанционного обучения

ОО проектирование

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

public Shape maxArea(Shape s1, Shape s2) {

// Выбор фигуры с макс. площадью if (s1.getArea() > s2.getArea()) return s1; else return s2;

}

online.mirea.ru

Центр дистанционного обучения

ОО проектирование

Принцип подстановки Барбары Лисков

(Liskov Substitution Principle, LSP):

Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.

Мы вызываем метод getArea(), не заботясь о том, что он реально делает.

online.mirea.ru

Источник: https://studfile.net/preview/16403813/