Абстрактный класс

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Абстрактный класс в объектно-ориентированном программированиикласс, содержащий хотя бы один абстрактный метод. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков. Абстрактные классы представляют собой наиболее общие абстракции, такие что имеют бо́льший объем и меньшее содержание.

В одних языках создавать экземпляры абстрактных классов запрещено, в других это допускается (например Delphi), но обращение к абстрактному методу объекта этого класса в процессе выполнения программы приведёт к ошибке. Во многих языках допустимо объявить любой класс абстрактным, даже если в нём нет абстрактных методов, именно для запрещения создания экземпляров. Абстрактный класс можно рассматривать в качестве интерфейса к семейству классов, порождённому им, но, в отличие от классического интерфейса, абстрактный класс может иметь определённые методы, а также свойства.

Абстрактные методы часто являются и виртуальными, в связи с чем понятия «абстрактный» и «виртуальный» иногда путают.

Примеры

Delphi

В Delphi может быть объявлен абстрактный класс с абстрактными методами:

TAbstractClass = class 
  procedure NonAbstractProcedure;
  procedure AbstractProcedure; abstract;
end;

Для такого класса может быть создан объект, но обращение к методу AbstractProcedure этого объекта во время выполнения вызовет ошибку.

В последних версиях Delphi также может быть объявлен абстрактным сам класс:

TAbstractClass = class abstract
  procedure SomeProcedure;
end;

Хотя метод SomeProcedure может быть не абстрактным и реализован в рамках этого класса, создавать объекты объявленного таким образом класса недопустимо.

См. также

de:Abstrakte Klasse en:Abstract type es:Tipo abstracto it:Classe astratta ja:抽象型 nl:Abstracte klasse sv:Klass (programmering)#Abstrakt klass

Личные инструменты

Served in 0.076 secs.