Наследование

Обычно, классифицируя некоторый объект, мы задаем следующие вопросы: чем этот объект похож на другие объекты общего класса и чем он отличается от других объектов? Каждый конкретный класс имеет свои особенности поведе­ния и характеристик, определяющих этот класс. Например, класс геометричес­ких фигур можно разделить на два подкласса: плоские фигуры и объемные фигуры. Плоские фигуры могут иметь вершины и не иметь их. Плоскими фигурами, не имеющими вершин, являются окружности и эллипсы (рис. 8.1).

Рис. 8.1. Фрагмент графического представления иерархии объектов класса

Задавая себе приведенные вопросы, программист продвигается от вершины иерархического дерева класса и проходит по дочерним подклассам. Наивысший уровень — самый общий, а вопросы здесь самые простые, например, яв­ляются ли фигуры плоскими или объемными. Каждый последующий уровень является более специфическим, чем предыдущий, и менее общим. На самом последнем уровне программист определит цвет, стиль заполнения, радиус окружности и другие конкретные детали фигур.

При использовании ООП следует помнить, что если характеристика однаж­ды определена, то все категории, расположенные ниже данного определения, тоже будут содержать эту характеристику. Поэтому, если определена окруж­ность, то нет необходимости узнавать, сколько у нее вершин, так как она от­носится к подклассу фигур, не имеющих вершин. Объектно-ориентирован­ное программирование является наилучшим инструментом для построения иерархических деревьев структур данных. Одной из важных особенностей, ко­торые объектно-ориентированное программирование добавляет к традицион­ным языкам типа Pascal, является механизм, с помощью которого типы дан­ных могут наследовать характеристики более простых, то есть более общих типов. Этим механизмом является наследование.

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

Создать новый класс от некоторого класса-родителя можно при помощи следующего

программного кода:

TNewClass = class(TOldClass)

Замечательной особенностью принципа наследования является то, что порожденный класс автоматически наследует поля, методы и свойства своего родителя и, более того, может дополнять их новыми. В результате программист, используя стандартные классы, имеющиеся в Delphi, может создавать собственные классы и даже целые библиотеки классов.

В Object Pascal все классы являются потомками класса TObject. Этот класс не вклю­чает в себя полей и свойств, зато его методы позволяют создавать, поддерживать жиз­недеятельность и удалять объекты. Если программист хочет создать класс, являющийся непосредственным потомком класса TObject, то имя класса-родителя в этом случае мож­но не указывать, т.е. следующие строки являются эквивалентными:

TSecondClass = class(TObject)

TSecondClass = class

Использование принципа наследования в Delphi привело к созданию разветвленного дерева классов. В верхней части этого дерева находятся так называемые абстрактные классы, для которых нельзя создать полноценные работающие объекты. Но вместе с тем абстрактные классы являются родоначальниками больших групп классов, для которых уже создаются реальные объекты.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: