Разница между абстрактным и интерфейсным классом в C++ заключается в следующем:
- Абстрактный класс — это класс, который содержит по крайней мере одну чисто виртуальную функцию. 34 Он используется для определения реализации и предназначен для наследования конкретными классами. 2
- Интерфейсный класс не имеет реализации. 2 Он содержит только виртуальный деструктор и чисто виртуальные функции. 2 Класс, реализующий интерфейс, должен предоставить реализацию всех методов этого интерфейса. 2 При этом наследования не создаётся: один и тот же интерфейс могут реализовывать никак не связанные между собой классы. 5
Таким образом, абстрактный класс создаёт иерархию наследования, а интерфейсный класс требует, чтобы класс, реализующий интерфейс, содержал реализации всех методов, определённых этим интерфейсом. 5