La prochaine chose qu'un débutant se demande après avoir compris à quoi ressemblent une interface et une classe abstraite __ Comment chacun doit-il être utilisé correctement? __ Je pense que c'est le cas.
Bref, c'est tout.
Implémentez l'interface pour les classes que vous souhaitez appeler en utilisant le polymorphisme.
L'utilisateur ne doit pas déclarer de variables de type classe abstraite. Déclarons des variables avec le type d'interface.
AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK
Vous ne devez pas non plus définir de méthodes qui utilisent des classes abstraites comme types d'arguments formels. Spécifions le type d'interface.
void fooMethod(AbstractFooBar fooBar); // NG
void fooMethod(IFooBar fooBar); // OK
Et si vous souhaitez utiliser le polymorphisme pour les classes enfants d'une classe abstraite? Parce que la question semble se poser. Dans ce cas, cela ressemble à ce qui suit.
De cette façon, l'utilisateur doit toujours appeler via l'interface IFooBar, et Pour ceux qui implémentent l'interface IFooBar, Vous pouvez choisir d'étendre AbstractFooBar ou d'implémenter IFooBar directement, Tout le monde sera heureux.
Recommended Posts