Objectif
- Créer une classe enfant abstraite
- Dériver une classe abstraite
- Implémenter des méthodes abstraites
Enoncé du problème
Un parc auto se compose de voitures et de camions qui ont des caractéristiques communes regroupées dans une classe Vehicle
.
- Chaque véhicule est caractérisé par son matricule, l’année de son modèle, son prix.
- Lors de la création d’un véhicule, son matricule est incrémenté selon le nombre de véhicules créés.
- Tous les attributs de la classe
Vehicle
sont privés, ce qui oblige la création des accesseurs (get…) et des mutateurs (set….). - La classe
Vehicle
possède également deux méthodes abstraitesstart()
etaccelerate()
qui seront définies dans les classes dérivées et qui afficheront des messages personnalisés. - La méthode
toString()
de la classeVehicle
retourne une chaîne de caractères qui contient les valeurs du matricule, de l’année du modèle et du prix. - Les classes
Car
etTruck
étendent la classeVehicle
en définissant concrètement les méthodesstart()
etaccelerate()
en affichant des messages personnalisés.
Travail à faire
- Créer la classe abstraite
Vehicle
- Créer les classes
Truck
etCar
- Créer une classe
Test
pour tester toutes les fonctionnalités des classesCar
etTruck
Solution du problème
public abstract class Vehicle { private static int nVehicles; private int id; protected int year; protected int price; Vehicle(int year, int price){ this.year = year; this.price = price; nVehicles++; id = nVehicles; } abstract void start(); abstract void accelerate(); @Override public String toString() { return "Vehicle " + id + ". Built in " + year + ", price : " + price; } }
public class Truck extends Vehicle{ Truck(int year, int price){ super(year, price); } @Override void accelerate() { System.out.println("The truck accelerates"); } @Override void start() { System.out.println("Starting the truck"); } }
package course.inheritance.online_exercises.vehicle; public class Car extends Vehicle{ Car(int year, int price){ super(year, price); } @Override void accelerate() { System.out.println("The car goes faster"); } @Override void start() { System.out.println("Let's start the car"); } @Override public String toString() { return super.toString() + ". Is a car"; } }
package course.inheritance.online_exercises.vehicle; public class Test { public static void main(String[] args) { Truck t1 = new Truck(2022, 65000); Car c1 = new Car(2014, 23000); Truck t2 = new Truck(2022, 48000); System.out.println(t1); System.out.println(c1); System.out.println(t2); } }