Лекция 7 Protected

Begin

Begin

Begin

Type

N Пример.

Protected

Private

N Пример.

Begin

inherited Create(Name);

fdepartment:= dep;

end;

После создания объекта класса-потомка в программе можно использовать поля и методы родительского класса.

Фрагмент программы, демонстрирующий указанную возможность:

Создание объекта класса

professor:= TProfessor.Create(‘Петров’, ‘ММФ’);

установка значения свойства родительского класса

professor.Address:= ‘ул. Ленина, 210, кв.11’;

применение метода родительского класса

professor.Show;

Директивы

protected (защищенный) и

private (закрытый)

устанавливают степень видимости элементов класса в программе.

Элементы класса, объявленные в секции protected, доступны только в классах, порожденных от данного класса.

Область видимости этих элементов не ограничивается модулем, в котором находится описание класса.

Обычно в секцию protected помещают описание методов класса.

Элементы класса, объявленные в секции private, видимы только внутри модуля.

Эти элементы не доступны за пределами модуля, даже в производных классах.

Обычно в секцию private помещают описание полей класса, а методы, обеспечивающие доступ к этим полям, – в секцию protected.

Описание класса TPerson, включающее директивы управления доступом:

TPerson = class

fname: TName;

faddress: TAddress;

constructor Create (Name: TName);

procedure Show;

function GetName: TName;

function GetAddress: TAddress;

procedure SetAddress (NewAddress: TAddress);

property Name: TName

read GetName;

property Address: TAddress

read GetAddress write SetAddress;

end;

3.Полиморфизм

Полиморфизм – это возможность использовать одинаковые имена для методов, входящих в различные классы.

Концепция полиморфизма обеспечивает применение к объекту именно того метода, который соответствует классу объекта.

Если в описании родительского класса метод объявлен как виртуальный (директива virtual), то каждый класс-потомок имеет возможность заменить виртуальный метод своим собственным методом.

Эта замена выполняется с помощью директивы override.

Рассмотрим определение трех классов:

TPerson – родительский класс,

Tproffessor и TStudent – классы, порожденные от TPerson.

TPerson = class

fname: string;

faddress: string;

constructor Create (Name, Address: string);

function Info: string; virtual;//объявление

end;виртуальногометода

TProfessor = class (TPerson)

fdepartment: string;

constructor Create (Name, Address, Dep: string);

function Info: string; override; замещение метода родительского класса

end;

класс-потомок TStudent = class (TPerson)

fgroup: integer;

constructor Create (Name, Address: string: Group: Integer);

function Info: string; override; замещение метода родительского класса

end;

Определение метода Info для каждого класса (в разделе Implementation):

function TPerson.Info: string;

result:= ‘’;

end;

function TProfessor.Info: string;

result:= fname + ‘ кафедра ‘ + fdepartment;

end;

function TStudent.Info: string;

result:= fname + ‘ группа ‘ + IntToStr (fgroupe);

end;

Пример для закрепления

Type Coordinates = class x, y: byte; procedure Init (Xinit, Yinit: byte); function GetX: byte; function GetY: byte; end; Type Cursor = class (coordinates) Hidden: Boolean; end;

Закрепление к лекции 6

Тема: Компоненты и их свойства и методы.

Вопросы:


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



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