Наследование
Наследование позволяет объявить новый класс на основе уже существующего (базового) класса.(для упрощения создания (описания) новых объектов)Новый класс (потомок) наследует свойства и методы базового (родительского) класса и может быть обогащен новыми возможностями.
Смысл наследования заключается в следующем: если нужно создать новый класс, лишь немного отличающийся от старого, то нет необходимости в переписывании заново уже существующих полей и методов. В этом случае объявляется новый класс, который является наследником уже имеющегося, и к нему добавляются новые поля, методы и свойства.
Такой механизм получения новых классов называется порождением.Процесс образования подкласса – специализация. Процесс образования суперкласса – обобщение.
Например,
У базового класса TButton(кнопка) есть дочерние классыBitBtn(кнопка с рисунком и надписью) иTSpeedButton(кнопка с рисунком).
При объявлении класса-потомка указывается класс родителя. Например, класс TEmployee (сотрудник) может быть порожден от рассмотренного выше класса TPerson путем добавления поля FDepartment (отдел). Объявление класса TEmplioyee в этом случае может выглядеть так:
type
TEmployee = class (TPerson)
FDepartment: integer; // номер отдела
constructor Create(Name:TName; Dep:integer);
end;
Правила наследования
1. Объект-наследник (потомок) получает все поля и методы предка.
2. Потомок может (хотя и не обязательно) добавить: собственные поля, методы или перекрыть своими методами одноимённые унаследованные методы.
3. Любой тип–потомок может быть родительским для других типов. В этом случае новый тип наследует поля всех своих предков .
4. Доступ к полям и методам родительских типов в описании типов – потомков выполняется так, как будто они описаны в самом типе-потомке.
5. Имена методов в родительских и дочерних типах могут совпадать. В этом случае метод дочернего типа «перекрывает» метод родительского.
Классы и объекты Delphi
Для реализации интерфейса Delphi использует библиотеку классов, которая содержит большое количество разнообразных классов, поддерживающих форму и различные компоненты формы (командные кнопки, поля редактирования и т. д.).
Классы и Объекты Delphi имеют следующую иерархию (см. диаграмму): Самый первый класс (основной), который не имеет предков, а сам является предком для всех остальных – TObject.
TObject.Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от их создания до уничтожения.
Класс TPersistent обогащает возможности своего родителя TObject: он умеет сохранять данные в файле и получать их из него, и это умеют делать все его потомки.
Класс TComponent умеет взаимодействовать со средой разработчика и передает это умение потомкам всем компонентам Delphi.
Класс TСontrol умеет взаимодействовать со средой и умеет обслуживать видимые на экране изображения,
а его потомок может создавать Windows-окна и т. д.
Если выразить наследование в виде иерархической структуры, то для созданных элементов управления Button1, Button2 и CheckBox1 получим следующую диаграмму:
Например, элемент управления CheckBox1 (т.е. классCheckBox1) может наследовать все или некоторые свойства и методы, вышестоящих по иерархии классов, а никакие черты от классаTButton– наследовать не может. Другими словами можно сказать, чтоCheckBox1 произведен (derived) непосредственно от класса-предкаTCheckBox, а также отTObject,TPersistent,TComponent,TControlиTWinControl.
Классы бывают абстрактными , это те классы ,что не имеют объектов. напримерTObject Абстрактные методы – методы, которые не содержат исполняемых операторов и служат заготовками для аналогичных методов в объектах – потомках. Абстрактные методы должны перекрываться в потомках.
Во время проектирования формы приложения Delphi автоматически добавляет в текст программы необходимые объекты. Если сразу после запуска Delphi просмотреть содержимое окна редактора кода, то там можно обнаружить следующие строки:
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: Tform1
Это описание класса исходной, пустой формы приложения и объявление объекта — формы приложения.
Когда программист, добавляя необходимые компоненты, создает форму, Delphi формирует описание класса формы. Когда программист создает функцию обработки события формы или ее компонента, Delphi добавляет объявление метода в описание класса формы приложения.
Помимо классов визуальных компонентов в библиотеку классов входят и классы так называемых невизуальных (невидимых) компонентов, которые обеспечивают создание соответствующих объектов и доступ к их методам и свойствам. Типичным примером невизуального компонента является таймер (тип TTimer) и компоненты доступа и управления базами данных. Существует еще множество других классов,