Menu
Coddy logo textTech

Héritage de base (extends)

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy. Leçon 20 sur 87.

L'héritage est l'un des piliers fondamentaux de la POO. Il permet à une classe d'acquérir les propriétés et les méthodes d'une autre classe, favorisant ainsi la réutilisation du code et établissant une hiérarchie naturelle entre les classes.

En Java, tu crées une relation d’héritage à l’aide du mot-clé extends. La classe qui hérite est appelée la sous-classe (ou classe enfant), et la classe dont elle hérite est appelée la super-classe (ou classe parent).

public class Animal {
    private String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public void eat() {
        System.out.println(name + " is eating");
    }
    
    public String getName() {
        return name;
    }
}

public class Dog extends Animal {
    public Dog(String name) {
        super(name);  // Appelle le constructeur parent
    }
    
    public void bark() {
        System.out.println(getName() + " says woof!");
    }
}

La classe Dog hérite automatiquement de la méthode eat() et de la méthode getName() de Animal. Elle peut également définir ses propres méthodes comme bark() :

Dog myDog = new Dog("Buddy");
myDog.eat();   // Hérité : "Buddy is eating"
myDog.bark();  // Sa propre méthode : "Buddy says woof!"

Considérez l'héritage comme une relation « est un ». Un Dog est un Animal, il est donc logique que Dog étende Animal. Cette relation vous permet de construire des classes spécialisées qui partagent des fonctionnalités communes tout en ajoutant leurs propres comportements uniques.

challenge icon

Défi

Facile

Construisons un système simple de véhicules qui démontre l’héritage en pratique. Vous allez créer une classe parente qui contient les propriétés communes aux véhicules, ainsi qu’une classe enfant qui l’étend avec un comportement spécialisé.

Vous organiserez votre code sur trois fichiers :

  • Vehicle.java : créez la classe parente qui représente n’importe quel véhicule. Elle doit avoir :
    • Un champ privé pour la brand du véhicule (String)
    • Un constructeur qui accepte le nom de la marque et l’affecte au champ. (Aucun appel à super() n’est nécessaire ici, puisque Vehicle se trouve au sommet de la hiérarchie.)
    • Une méthode getBrand() qui renvoie la marque
    • Une méthode start() qui affiche : [brand] is starting
  • Motorcycle.java : créez une sous-classe qui étend Vehicle. Une moto est un véhicule, cette relation « est-un » rend donc l’héritage approprié. Votre Motorcycle doit :
    • Utiliser extends pour hériter de Vehicle
    • Avoir un constructeur qui accepte la marque et la transmet à la classe parente à l’aide de super(brand)
    • Ajouter sa propre méthode wheelie() qui affiche : [brand] is doing a wheelie!
  • Main.java : assemblez le tout en créant un objet Motorcycle et en démontrant à la fois les comportements hérités et les comportements qui lui sont propres. Vous recevrez une entrée : le nom de la marque. Affichez deux lignes en appelant :
    • La méthode héritée start()
    • La propre méthode wheelie() de Motorcycle

Vous recevrez une entrée : le nom de la marque (String) de votre moto.

Remarquez que votre Motorcycle a automatiquement accès à start() et getBrand() sans avoir à les réécrire : c’est toute la puissance de l’héritage !

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String brand = scanner.nextLine();
        
        // TODO: Créer un objet Motorcycle avec la marque brand
        
        // TODO: Appeler la méthode héritée start()
        
        // TODO: Appeler la méthode wheelie()
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Java en ligne