разница между наследованием интерфейса и наследованием реализации

Я нашел эти два термина в книге Мейерса, но в чем разница?

Ответы на вопрос(3)

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

Реализация (или класс) наследования это когда вы отделяете общую часть реализации в базовом классе.

Наследование интерфейса это когда вы используете виртуальные методы. Он предназначен для отделения интерфейса от реализации и минимизации зависимостей между элементами программы.

 Michal Czardybon12 янв. 2011 г., 10:50
Исправлено 1) чтобы быть более точным. Мое определение поддерживаетсяexforsys.com/tutorials/csharp/inheritance-in-csharp.html
 Péter Török12 янв. 2011 г., 11:02
еще раз отметим, что это C ++, а не C # :-) C ++ как язык даже не содержит понятияинтерфейс - на практике это реализовано как класс, содержащий только чисто виртуальные методы.
 Péter Török12 янв. 2011 г., 10:33
Ваши утверждения неверны по нескольким причинам: 1) вам не нужно добавлять какие-либо новые поля / методы в производный класс для наследования его реализации, 2) вам не нужны виртуальные методы для наследования интерфейса класса, это происходит по умолчанию в случае публичного наследования.
Решение Вопроса

тогда как наследование реализации является частным наследованием.

Если класс B публично наследует от A, Bявляется A: он наследует весь интерфейс A, и объект (ссылка / указатель на) объекта B может автоматически преобразовываться в A и использоваться там, где ожидается объект A. Однако, если B в частном порядке наследует от A, Bявляется реализуемый-в-условиях, из A: только реализация A наследуется,не его интерфейс. Таким образом (ссылки / указатели на) объекты B могутне использоваться в местах, где ожидаются объекты.

Обновить

Чтобы отразить комментарий @ Michal, вот несколько ссылок (основанных в основном напоиск в Google "наследование реализации c ++") чтобы продемонстрировать общее использование этих терминов в контексте C ++:

C ++ Design / Советы по кодированию - часть 7ИнтерфейсыИспользование и злоупотребление наследованием, часть 1
 Matthieu M.23 сент. 2010 г., 10:22
Обратите внимание, чтоprivate Наследование должно использоваться только в очень ограниченном числе случаев (в основном: виртуальное переопределение / оптимизация пустой базы). Отношения «реализовано в терминах» лучше всего реализуются по композиции.
 Péter Török23 сент. 2010 г., 10:47
@Matthieu, правильно, спасибо за упоминание.

Ваш ответ на вопрос