Classe abstraite, Interface
Classe abstraite
Comme nous venons de le voir dans l’exemple précédent, une classe C# peut être précédée du mot clef abstract, ce qui signifie alors que cette classe est abstraite, nous avons les contraintes de définition suivantes pour une classe abstraite en C# :
Si une classe contient au moins une méthode abstract, elle doit impérativement être déclarée en classe abstract elle-même. C’est ce que nous avons écrit au paragraphe précédent pour la classe Etre_Vivant que nous avons déclarée abstract parce qu’elle contenait la méthode abstraite SeDeplacer.
Une classe abstract ne peut pas être instanciée directement, seule une classe dérivée (sous-classe) qui redéfinit obligatoirement toutes les méthodes abstract de la classe mère peut être instanciée.
Conséquence du paragraphe précédent, une classe dérivée qui redéfinit toutes les méthodes abstract de la classe mère sauf une (ou plus d’une) ne peut pas être instanciée et subit la même règle que la classe mère : elle contient au moins une méthode abstraite donc elle est aussi une classe abstraite et doit donc être déclarée en abstract.
Une classe abstract peut contenir des méthodes non abstraites et donc implantées dans la classe. Une classe abstract peut même ne pas contenir du tout de méthodes abstraites, dans ce cas une classe fille n’a pas la nécessité de redéfinir les méthodes de la classe mère pour être instanciée.
Delphi contrairement à C# et Java, ne possède pas à ce jour le modèle de la classe abstraite, seule la version Delphi2005 pour le Net Framework possède les mêmes caractéristiques que C#.
Interface
Lorsqu’une classe est déclarée en abstract et que toutes ses méthodes sont déclarées en abstract, on appelle en C# une telle classe une Interface.
Rappel classes abstraites-interfaces
- Les interfaces ressemblent aux classes abstraites sur un seul point : elles contiennent des membres
expliquant certains comportements sans les implémenter.
- Les classes abstraites et les interfaces se différencient principalement par le fait qu’une classe peut
implémenter un nombre quelconque d’interfaces, alors qu’une classe abstraite ne peut hériter que d‘une seule classe abstraite ou non.
Classes, objets et méthodes (328 KO) (Cours DOC)