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, vous créez une relation d'héritage en utilisant le mot-clé extends. La classe qui hérite est appelée la sous-classe (ou classe enfant), et la classe dont on hérite est la super-classe (ou classe parente).

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 class 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 de véhicule simple qui démontre l'héritage en action. Vous allez créer une classe parente qui contient les propriétés communes des véhicules, et 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'assigne au champ. (Aucun appel à super() n'est nécessaire ici, puisque Vehicle est au sommet de la hiérarchie.)
    • Une méthode getBrand() qui retourne 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, donc cette relation "est-un" rend l'héritage approprié. Votre Motorcycle doit :
    • Utiliser extends pour hériter de Vehicle
    • Avoir un constructeur qui prend la marque et la passe au parent en utilisant super(brand)
    • Ajouter sa propre méthode wheelie() qui affiche : [brand] is doing a wheelie!
  • Main.java : Rassemblez le tout en créant un objet Motorcycle et en démontrant à la fois les comportements hérités et uniques. 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) pour votre moto.

Remarquez comment votre Motorcycle a automatiquement accès à start() et getBrand() sans les réécrire - c'est là 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