Classes abstraites
Il arrive souvent, lorsqu'une interface dispose de plusieurs implémentations,
que celles-ci aient du code en commun qu'il faut factoriser. L'erreur souvent
commise est alors de considérer un ordre sur les classes, et de
les faire hériter les unes des autres. En effet, par ce biais, un
objet a toutes les chances de posséder un type qui ne lui correspond
pas. Il convient plutôt d'utiliser les classes
abstraites, qui sont des classes non instanciables.
Notons qu'une classe abstraite peut être déclarée comme
implémentant une interface, ce qui permet de garantir les signatures
des méthodes. Les méthodes non implémentées
devront être déclarées abstraites.