11- Les classes abstraites

Certaines classes sont dites abstraites, c'est à dire qu'on ne peut pas les instancier. Dans notre exemple, la classe Vehicule mériterait d'être abstraite car un véhicule n'existe pas en tant que tel et ne peut jamais être utilisé comme tel : on ne peut utilisé que les classes qui en héritent (Voiture, Moto...). Par définition, une classe abstraite ne peut être finale puisqu'elle doit être héritée. Si vous voulez faire une classe qui ne peut-être instanciée ni étendue, il suffit de déclarer son constructeur privé. Vous ne pourrez l'utiliser que si elle possède des méthodes ou attributs statiques publiques.

Une classe abstraite peut définir des méthodes abstraites : c'est à dire qu'elles seront obligatoirement réécrites par les classes qui vont en hériter. Une classe conrète ne peut définir de méthode abstraite.

Exemple de classe abstraite :

abstract class Vehicule{
    public abstract function faireDuBruit();
}