2010-10-14 14 views
1

Eh bien jusqu'à maintenant je savais que nous implémentons des interfaces, mais aujourd'hui un corps (vous savez qui, je suppose)) m'a dit que si j'écris une interface alors nous l'implémentons en classe, mais si c'est une interface système, disons INotifyPropertyChanged , nous l'appelons la classe A hérite de l'interface INotifyPropertyChanged.Est-ce que nous héritons d'une interface ou implémente une interface?

Bien que je me sente bien, je ne suis pas sûr et je ne sais pas comment l'expliquer.

Je dois spécifier dans mon design. Alors je me demande ce que je vais mentionner, Hériter ou implémenter.

+0

Une partie de la confusion provient de C++ dépourvu de 'interface' qui est distinct de' class'. Les utilisateurs de Java pourront signaler leurs différences. – rwong

+0

Ceci est vraiment une question C#, mais comme d'autres l'ont dit, vous implémentez une interface. Ceci est fait en héritant de cela. –

+0

question utile que j'ai trouvé est ici http://stackoverflow.com/q/8531292/1055241 – gprathour

Répondre

4

Nous l'héritons pour l'implémenter. Quel est le problème?

+0

Je dois spécifier dans mon design doucment. Alors je me demande ce que je vais mentionner, Hériter ou implémenter. –

+2

@ user443144: implémentation. L'héritage est un détail de la mise en œuvre. – ybungalobill

1

1-Interface est implémenté par une classe, qu'il s'agisse d'une interface normale ou d'une interface système.

2- Une interface peut hériter d'une autre interface.

1

En parlant la langue indépendante vous diriez "implementing an interface". Le symbole dans UML le nomme de la même manière (une flèche d'implémentation spéciale est utilisée pour les interfaces au lieu de la flèche d'héritage)
Quiconque comprend UML comprendrait ce que vous voulez dire.

En C++, vous devez considérer qu'il n'y a pas d'interfaces telles qu'elles existent dans d'autres langages. Une interface est une classe virtuelle pure. Ainsi, les classes qui "utilisent" cette interface héritent à proprement parler d'une classe virtuelle pure. Si vous dites "MyClass inherits the pure virtual class IClass" quelqu'un C++ - lié comprendrait que vous voulez dire l'interface je pense. Il comprendrait aussi si vous dites "MyClass is implementing IClass" et en arrière-plan pensez à une classe virtuelle pure.

0

Si la classe A fournit les corps de méthode (c'est-à-dire le code) pour les méthodes déclarées dans l'interface, la classe A met en œuvre l'interface.

En C++, en raison du manque de distinction entre l'interface et la classe, la syntaxe du code source pour hériter d'une classe et implémenter une interface est la même. D'où la confusion.