Разница между наследованием интерфейсов и наложением реализации
Я нашел эти два термина в книге Мейерса, но в чем разница?
Ответы
Ответ 1
Наследование интерфейса - это наследование, а наследование реализации - частное наследование.
Если класс B наследует от A, B является A: он наследует весь интерфейс A, а объект (reference/pointer to) объект B может быть автоматически поднят до A и использоваться везде, где объект A ожидается. Однако, если B частным образом наследуется от A, B - реализован в терминах A: только наследование A наследуется, а не его интерфейс. Таким образом, объекты (ссылки/указатели на) B не могут использоваться в тех местах, где ожидаются объекты A.
Update
Чтобы отразить комментарий @Michal, вот несколько ссылок (в основном на googling "наследование реализации на С++" ), чтобы продемонстрировать общее использование эти термины в контексте С++:
Ответ 2
Наследование реализации (или класса) - это когда вы разделяете общую часть реализации в базовом классе.
Наследование интерфейсов - это когда вы используете виртуальные методы. Он предназначен для ветки интерфейса от реализации и минимизации зависимостей между элементами программы.
Ответ 3
Основное различие заключается в том, что интерфейс является наследованием наследования, а реализация - частным наследованием.
Члены данных и метод открытого и защищенного раздела будут наследоваться от базового класса до производного класса в своем соответствующем спецификаторе доступа в открытом наследовании. В то же время объект производного класса может обращаться к членам данных базового класса в качестве обычного метода,
Члены данных и методы открытого и защищенного раздела будут унаследованы от базового класса до производного класса в спецификаторе частного доступа