Операторы PASCAL ABC
Наследование
Класс может быть унаследован от другого класса. Например, при объявлении
type MyClass=class(BaseClass)
...
end;
класс MyClass наследуется от класса BaseClass.
Класс-потомок называется также производным классом или подклассом, а класс-предок - базовым классом или надклассом. Потомок автоматически наследует все поля и методы своего предка. Он может также определять новые поля и методы, а также переопределять (замещать) методы предка.
Имена полей и методов, объявленные в классе, доступны до конца объявления класса, а также во всех его потомках.
Все классы неявно наследуются от класса Object. Этот класс объявлен следующим образом:
type Object=class
constructor Create;
destructor Destroy;
function TypeName: string;
function ToString: string;
end;
Таким образом, любой класс может создавать свои объекты, вызывая конструктор Create без параметров, и уничтожать их, вызывая деструктор Destroy, даже если эти методы не приведены в его описании:
var m: MyClass;
...
m:=MyClass.Create;
...
m.Destroy;
В конце работы программы все созданные объекты должны быть разрушены. Поэтому для каждого созданного объекта рекомендуется явно вызвать деструктор. Однако, если этого не сделать, то система Pascal ABC после завершения программы автоматически вызывает деструкторы всех созданных объектов.
Метод TypeName возвращает имя класса объекта, а метод ToString - строковое представление объекта. В классе Object метод ToString также возвращает имя класса объекта, но это поведение может быть переопределено в потомках. Например:
type MyClass=class
i: integer;
constructor Create(i: integer);
begin
Self.i:=i;
end;
function ToString: string;
begin
Result:=IntToStr(i);
end;
end;
var a: MyClass;
...
a:=MyClass.Create(3);
writeln(a.TypeName); // MyClass
writeln(a.ToString); // 3
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.