Comment définir une classe abstraite avec des méthodes abstraites ?
Savoir combiner méthodes abstraites et méthodes concrètes dans une classe abstraite pour partager du code commun.
Savoir combiner méthodes abstraites et méthodes concrètes dans une classe abstraite pour partager du code commun.
Une classe abstraite peut contenir à la fois des méthodes abstraites (à implémenter dans les sous-classes) et des méthodes concrètes partagées ; cela évite la duplication de code tout en imposant un contrat.
abstract.La classe abstraite Voiture fournit une implémentation de void affiche() (commune à toutes les voitures), mais laisse double cout() abstraite (spécifique à Essence et Electrique).
Le comportement commun : afficher immatriculation + nombrePlaces (pareil pour toutes les Voitures).
// cout() dépend du type (carburant vs électricité) → abstract
// affiche() est identique pour toutes → concrète dans la classe abstraite
Implémenter affiche() directement dans Voiture abstraite.
abstract class Voiture extends Vehicule {
int nombrePlaces;
public void affiche() {
System.out.println("Voiture " + immatriculation + " - " + nombrePlaces + " places");
}
abstract double cout(int km); // à implémenter dans les sous-classes
}
abstract.Chaque sous-classe implémente uniquement cout(), héritant affiche() automatiquement.
class Essence extends Voiture {
double consommation; // L/100km
double prixLitre;
@Override double cout(int km) { return km / 100.0 * consommation * prixLitre; }
}
class Electrique extends Voiture {
double conso; // kWh/100km
double prixKwh;
@Override double cout(int km) { return km / 100.0 * conso * prixKwh; }
}
Voiture fournit affiche() (commun) et impose cout() (spécifique). Essence et Electrique n'implémentent que cout().
Classe abstraite Forme avec aire() abstraite et une méthode concrète String description() qui retourne "Forme de couleur X, aire = Y" en appelant aire().
Classe abstraite Compte avec solde() concret et retirer(double) abstrait (la logique varie selon le type de compte).
Crée ton compte gratuit pour accéder à la fiche et aux exercices