Je suis conscient que c'est une question très basique, mais un intervieweur m'a posé une question très astucieuse et j'étais impuissant :(
Je ne connais que la définition matérielle ou théorique d'une interface et je l'ai également implémentée dans de nombreux projets sur lesquels j'ai travaillé. Mais je ne comprends vraiment pas pourquoi et comment est-ce utile.
Je ne comprends pas non plus une chose dans l'interface. c'est à dire par exemple, nous utilisons
conn.Dispose();
dans enfin bloc. Mais je ne vois pas que cette classe implémente ou hérite de la classe IDisposable
interface ( SqlConnection
) que je veux dire. Je me demande comment je peux simplement appeler le nom de la méthode. Dans le même ordre d'idées, je ne comprends pas comment la méthode Dispose fonctionne car nous devons implémenter le corps de la fonction avec notre propre implémentation pour toutes les méthodes d'interface. Alors, comment les interfaces sont-elles acceptées ou nommées comme contrats? Ces questions ont continué à rouler dans mon esprit jusqu'à présent et, franchement, je n'ai jamais vu de fil conducteur qui expliquerait mes questions d'une manière que je puisse comprendre.
MSDN, comme d'habitude, semble très effrayant et aucune ligne n'est claire là-bas ( Mes amis, veuillez excuser qui sont dans le développement de haut niveau, je pense fermement que tout code ou article devrait atteindre l'esprit de quiconque le voit, donc comme beaucoup d'autres le disent, MSDN n'est pas utile ).
L'intervieweur a déclaré:
Il a 5 méthodes et il est heureux de l'implémenter directement dans la classe, mais si vous devez opter pour une classe ou une interface abstraite, laquelle choisissez-vous et pourquoi? Je lui ai répondu à tous les trucs que j'ai lus dans divers blogs en disant l'avantage et le désavantage de la classe abstraite et de l'interface, mais il n'est pas convaincu, il essaie de comprendre "Pourquoi l'interface" en général. "Pourquoi une classe abstraite" en général même si je ne peux implémenter les mêmes méthodes qu'une seule fois et ne pas la changer.
Je ne vois nulle part sur le net, je pourrais obtenir un article qui m'expliquerait clairement sur les interfaces et son fonctionnement. Je fais partie de ces nombreux programmeurs, qui ne connaissent toujours pas les interfaces (je connais la théorie et les méthodes que j'ai utilisées) mais qui ne sont pas convaincus de l'avoir bien compris.
SqlConnection
hérite de System.ComponentModel.Component
qui implémente IDisposable
.
SqlConnection
implémente IDisposable
.