разница между наследованием интерфейса и наследованием реализации - PullRequest
15 голосов
/ 23 сентября 2010

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

Ответы [ 3 ]

17 голосов
/ 23 сентября 2010

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

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

Обновление

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

1 голос
/ 11 января 2011

Наследование реализации (или класса) - это разделение общей части реализации в базовом классе.

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

0 голосов
/ 06 декабря 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...