Наследование классов. Delphi

Наследование - один из фундаментальных принципов ООП. Новый класс-наследник содержит все методы, поля и свойства класса родителя и имеет у ним доступс некоторым возможным ограничением (за это отвечают спецификаторы доступа: public, private, protected).
Удалим в разделе interface метод Init и его реализацию. Будем использовать конструктор с параметрами.
При нажатии Shift+Ctrl+C попадаем в заготовку после описания метода в интерфейсной части.
constructor Create(a, b, c: word);
begin
Fa:=a;
Fb:=b;
Fc:=c;
end
view raw TParalllel.pas hosted with ❤ by GitHub
При создании объекта используем Par1:=Create(Fa, Fb, Fc).
На основе класса TParalllel создадим производный класс - TBar, в который будет добавлено новое поле - плотность и метод Weight.
TBar = class (TParalllel)
имеет методы:
Метод Volume, унаследованный от TParalllel.
Новый одноимённый метод Show, перекрывающий родительский.
Новый метод massa
Собственный конструктор и поле Ro.
В момент формирования объектов в памяти всегда должен вызываться сначала конструктор базового класса, инициализирующий базовую часть объекта. А затем вызывается конструктор производного класса, отвечающий за иниализацию остальной части объекта.
Десирукторы вызываться в обратном порядке конструктора.
Вызов родительского метода предворяется ключевым словом Inherited. Если в производном классе объявлен метод с тем же именем, что и в базовым классе, то этот новый одноимённый метод производного класса отменяет старый метод и для объекта производного класса будет вызваться новый метод. В этом случае говорят, что новый одноимённый метод производного класса перекрыл (заменил) старый одноимённый метод родительского класса. Такие методы называются статическими.
Опишем реализацию класса TBar.
{Метод конструктор Create класс TBar}
constructor TBar.Create(a, b, c: word; Ro: real) ;
begin
inherited Create(a, b, c) ;
FRo:=Ro;
end;
{Метод massa}
function TBar.massa: real;
begin
result:=FRo*Volume;
end;
procedure TBar.Show;
begin
ShowMessage(... );
end;
view raw TBar.pas hosted with ❤ by GitHub
Создадим обработчик Button1.Click, который вызывает два метода.
Bar1.Create(1,2,3,10,5);
Bar1.Show;
view raw TBar.pas hosted with ❤ by GitHub
Закомментируем метод Show в классе TBar - будет вызван метод класса-родителя TParalllel.

Комментарии

Популярные сообщения