Абстрактный класс
Абстрактный класс в объектно-ориентированном программировании — класс, содержащий хотя бы один абстрактный метод. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Абстрактные классы представляют собой наиболее общие абстракции, такие что имеют бо́льший объем и меньшее содержание.
В одних языках создавать экземпляры абстрактных классов запрещено, в других это допускается (например Delphi), но обращение к абстрактному методу объекта этого класса в процессе выполнения программы приведёт к ошибке. Во многих языках допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов, именно для запрещения создания экземпляров. Абстрактный класс можно рассматривать в качестве интерфейса к семейству классов, порождённому им, но, в отличие от классического интерфейса, абстрактный класс может иметь определённые методы, а также свойства.
Абстрактные методы часто являются и виртуальными, в связи с чем понятия «абстрактный» и «виртуальный» иногда путают.
Примеры
Delphi
В Delphi может быть объявлен абстрактный класс с абстрактными методами:
TAbstractClass = class
procedure NonAbstractProcedure;
procedure AbstractProcedure; abstract;
end;
Для такого класса может быть создан объект, но обращение к методу AbstractProcedure
этого объекта во время выполнения вызовет ошибку.
В последних версиях Delphi также может быть объявлен абстрактным сам класс:
TAbstractClass = class abstract
procedure SomeProcedure;
end;
Хотя метод SomeProcedure
может быть не абстрактным и реализован в рамках этого класса, создавать объекты объявленного таким образом класса недопустимо.
См. также
bs:Apstraktna klasa de:Abstrakte Klasse en:Abstract type es:Tipo abstracto it:Classe astratta ja:抽象型 nl:Abstracte klasse sv:Klass (programmering)#Abstrakt klass
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....