Наследование классов. Delphi
Наследование - один из фундаментальных принципов ООП. Новый класс-наследник содержит все методы, поля и свойства класса родителя и имеет у ним доступс некоторым возможным ограничением (за это отвечают спецификаторы доступа: public, private, protected).
Удалим в разделе interface метод Init и его реализацию. Будем использовать конструктор с параметрами.
При нажатии Shift+Ctrl+C попадаем в заготовку после описания метода в интерфейсной части.
При создании объекта используем Par1:=Create(Fa, Fb, Fc).
На основе класса TParalllel создадим производный класс - TBar, в который будет добавлено новое поле - плотность и метод Weight.
TBar = class (TParalllel)
имеет методы:
Метод Volume, унаследованный от TParalllel.
Новый одноимённый метод Show, перекрывающий родительский.
Новый метод massa
Собственный конструктор и поле Ro.
В момент формирования объектов в памяти всегда должен вызываться сначала конструктор базового класса, инициализирующий базовую часть объекта. А затем вызывается конструктор производного класса, отвечающий за иниализацию остальной части объекта.
Десирукторы вызываться в обратном порядке конструктора.
Вызов родительского метода предворяется ключевым словом Inherited. Если в производном классе объявлен метод с тем же именем, что и в базовым классе, то этот новый одноимённый метод производного класса отменяет старый метод и для объекта производного класса будет вызваться новый метод. В этом случае говорят, что новый одноимённый метод производного класса перекрыл (заменил) старый одноимённый метод родительского класса. Такие методы называются статическими.
Опишем реализацию класса TBar.
Создадим обработчик Button1.Click, который вызывает два метода.
Закомментируем метод Show в классе TBar - будет вызван метод класса-родителя TParalllel.
Удалим в разделе interface метод Init и его реализацию. Будем использовать конструктор с параметрами.
При нажатии Shift+Ctrl+C попадаем в заготовку после описания метода в интерфейсной части.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
constructor Create(a, b, c: word); | |
begin | |
Fa:=a; | |
Fb:=b; | |
Fc:=c; | |
end | |
На основе класса TParalllel создадим производный класс - TBar, в который будет добавлено новое поле - плотность и метод Weight.
TBar = class (TParalllel)
имеет методы:
Метод Volume, унаследованный от TParalllel.
Новый одноимённый метод Show, перекрывающий родительский.
Новый метод massa
Собственный конструктор и поле Ro.
В момент формирования объектов в памяти всегда должен вызываться сначала конструктор базового класса, инициализирующий базовую часть объекта. А затем вызывается конструктор производного класса, отвечающий за иниализацию остальной части объекта.
Десирукторы вызываться в обратном порядке конструктора.
Вызов родительского метода предворяется ключевым словом Inherited. Если в производном классе объявлен метод с тем же именем, что и в базовым классе, то этот новый одноимённый метод производного класса отменяет старый метод и для объекта производного класса будет вызваться новый метод. В этом случае говорят, что новый одноимённый метод производного класса перекрыл (заменил) старый одноимённый метод родительского класса. Такие методы называются статическими.
Опишем реализацию класса TBar.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{Метод конструктор 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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bar1.Create(1,2,3,10,5); | |
Bar1.Show; |
Комментарии
Отправить комментарий