Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Héritage de Classe avec Extends et Utilisation de Super | Classes
Maîtrise Avancée de JavaScript
course content

Contenu du cours

Maîtrise Avancée de JavaScript

Maîtrise Avancée de JavaScript

2. Manipulation du DOM
3. Événements et Gestion des Événements
4. JavaScript Asynchrone et APIs

book
Défi : Héritage de Classe avec Extends et Utilisation de Super

Tâche

Vous travaillez sur un système de gestion des transports qui suit différents types de véhicules. Chaque véhicule a une make, un model et une year. Pour les véhicules électriques, vous devez également suivre la batteryCapacity. Vous utiliserez l'héritage pour étendre une classe générale Vehicle pour des véhicules électriques spécifiques.

  1. Créez une classe ElectricVehicle qui étend Vehicle;
  2. Le constructeur de ElectricVehicle doit accepter make, model, year et batteryCapacity;
  3. Utilisez super() pour initialiser make, model et year dans la classe parente;
  4. Ajoutez une méthode getDetails à ElectricVehicle qui remplace la méthode Vehicle de getDetails. Elle doit appeler super.getDetails() et ajouter des informations sur la batteryCapacity. Le format doit être : "{make} {model} ({year}) with a battery capacity of {batteryCapacity} kWh.".
12345678910111213141516171819202122232425262728293031
class Vehicle { constructor(make, model, year) { this.make = make; this.model = model; this.year = year; } getDetails() { return `${this.make} ${this.model} (${this.year})`; } } class ElectricVehicle _____ _____ { _____(make, model, year, _____) { _____(_____, _____, _____); this.batteryCapacity = batteryCapacity; } _____() { return `${super._____} with a battery capacity of ${ _____._____ } kWh.`; } } // Testing const vehicle = new Vehicle('Toyota', 'Camry', 2020); console.log(vehicle.getDetails()); // Expected: Toyota Camry (2020) const electricVehicle = new ElectricVehicle('Tesla', 'Model 3', 2021, 75); console.log(electricVehicle.getDetails()); // Expected: Tesla Model 3 (2021) with a battery capacity of 75 kWh.
copy
  • Définir une classe ElectricVehicle qui étend Vehicle;
  • Dans le constructeur de ElectricVehicle, ajouter un paramètre batteryCapacity après make, model, et year;
  • Utiliser super(make, model, year) pour appeler le constructeur de la classe parente et initialiser make, model, et year;
  • Assigner batteryCapacity à une propriété dans ElectricVehicle;
  • Définir une méthode getDetails dans ElectricVehicle qui remplace la méthode Vehicle de getDetails;
  • À l'intérieur de getDetails, utiliser super.getDetails() pour obtenir les détails de la classe parente, puis ajouter l'information de la capacité de la batterie à la chaîne de retour.
12345678910111213141516171819202122232425262728293031
class Vehicle { constructor(make, model, year) { this.make = make; this.model = model; this.year = year; } getDetails() { return `${this.make} ${this.model} (${this.year})`; } } class ElectricVehicle extends Vehicle { constructor(make, model, year, batteryCapacity) { super(make, model, year); this.batteryCapacity = batteryCapacity; } getDetails() { return `${super.getDetails()} with a battery capacity of ${ this.batteryCapacity } kWh.`; } } // Testing const vehicle = new Vehicle('Toyota', 'Camry', 2020); console.log(vehicle.getDetails()); // Output: Toyota Camry (2020) const electricVehicle = new ElectricVehicle('Tesla', 'Model 3', 2021, 75); console.log(electricVehicle.getDetails()); // Output: Tesla Model 3 (2021) with a battery capacity of 75 kWh.
copy

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 15
We're sorry to hear that something went wrong. What happened?
some-alt