Унаследуем ли мы интерфейс или реализуем интерфейс? - PullRequest
1 голос
/ 14 октября 2010

Ну, до сих пор я знал, что мы реализуем интерфейсы, но сегодня какой-то орган (вы знаете, кто, я думаю) сказал мне, что если я напишу интерфейс, то мы реализуем его в классе, но если это системный интерфейс, скажемINotifyPropertyChanged, мы называем это Классом A наследуется интерфейс INotifyPropertyChanged.

Хотя я чувствую себя хорошо, я не уверен и не уверен, как ему это объяснить.

Мне нужно указатьв моем дизайнеТак интересно, что я буду упоминать, Наследовать или Реализовать.

Ответы [ 4 ]

4 голосов
/ 14 октября 2010

Мы наследуем это, чтобы реализовать это.В чем проблема?

1 голос
/ 14 октября 2010

Говоря независимо от языка, вы скажете "implementing an interface". Символ в UML называет его одинаковым (есть специальная стрелка-реализация, которая используется для интерфейсов вместо стрелки-наследования)
Любой, кто понимает UML, поймет, что вы имеете в виду.

В C ++ вы должны учитывать, что нет интерфейсов, поскольку они существуют в других языках. Интерфейс - это чисто виртуальный класс. Так что классы, которые «используют» этот интерфейс, строго говоря, наследуются от чисто виртуального класса. Если вы говорите "MyClass inherits the pure virtual class IClass", кто-то, связанный с C ++, поймет, что вы имеете в виду интерфейс, я думаю. Он также поймет, если вы скажете "MyClass is implementing IClass" и в фоновом режиме подумаете о чисто виртуальном классе.

1 голос
/ 14 октября 2010

1-интерфейс реализуется классом, будь то обычный интерфейс или системный интерфейс.

2 - Один интерфейс может наследовать другой интерфейс.

0 голосов
/ 14 октября 2010

Если класс A предоставляет тела методов (то есть код) для методов, которые объявлены в интерфейсе, то класс A реализует интерфейс.

В C ++ из-за отсутствия различий междуинтерфейс и класс, синтаксис исходного кода для наследования от класса и реализации интерфейса одинаков.Отсюда путаница.

...