Chargement...

Héritage en Java

Créez un type enfant avec extends pour utiliser une méthode écrite sur le parent. Placez horn sur Car pour qu’il affiche beep. Écrivez class Truck extends Car. Dans Yard.java, construisez un Truck et appelez t.horn(). Compilez avec javac Yard.java et exécutez java Yard. L’écran doit montrer beep. Une deuxième démo construit aussi un Car simple pour voir que le parent fonctionne encore après l’enfant. Laissez super pour la page suivante. Ne réécrivez pas horn sur Truck sur cette page — la redéfinition viendra plus tard.

Un enfant garde une méthode du parent

La page paths nommait des emplacements avec Paths.get. Cette page ouvre un nouveau module : une classe peut être enfant d’une autre. Ouvrez un fichier pédagogique nommé Yard.java. Gardez le nom de classe public Yard pour qu’il corresponde au fichier. Supprimez les démos de chemin Route restantes, les écrivains Store, les scanners Reader et tout Scanner clavier. Le programme ne doit pas attendre la frappe. Vous n’avez pas besoin de ligne import pour cette leçon.
Au-dessus de la classe publique, déclarez un type parent package-private :
class Car {
Dans Car, écrivez une méthode d’instance void horn() qui affiche beep :
System.out.println("beep");
Puis déclarez l’enfant :
class Truck extends Car {
Gardez le corps de Truck vide sur cette page. L’enfant ne réécrit pas horn. Des accolades vides suffisent pour dire que Truck est une sorte de Car.
Dans Yard.main, construisez un truck et appelez la méthode héritée :
Truck t = new Truck();
t.horn();
L’appel fonctionne parce que extends Car relie Truck à Car. Vous n’avez pas copié horn dans Truck.

Yard Truck extends Car horn beep

java
class Car {
    void horn() {
        System.out.println("beep");
    }
}

class Truck extends Car {
}

public class Yard {
    public static void main(String[] args) {
        Truck t = new Truck();
        t.horn();
    }
}

Depuis le dossier qui contient Yard.java, lancez javac Yard.java. Quand parenthèses, accolades et point-virgules concordent, javac n’écrit pas sa propre ligne. Puis lancez java Yard — pas java Yard.java. Omettez le suffixe .java à l’exécution. Une seule classe publique est dans ce fichier, le nom correspond à Yard. Les types auxiliaires Car et Truck restent sans public dans cette forme débutant. Trois classes publiques dans un fichier ferait refuser javac — gardez la règle de la page classes.
L’écran affiche beep. Parcourez l’exécution une fois. Java démarre à Yard.main. new Truck() construit un objet truck. t.horn() trouve horn sur le parent Car par héritage. La méthode affiche beep. Si javac dit qu’il ne trouve pas horn sur Truck, la ligne extends Car manque ou est mal orthographiée — remettez-la. Si vous voyez note.txt ou une impression de chemin, un reste Route tourne encore — passez à java Yard. Si le terminal attend la frappe, un Scanner clavier reste dans le fichier — supprimez-le.
Écrivez extends avec soin. Une virgule ou le mot implements par erreur n’est pas cette leçon. L’héritage ici, c’est le mot-clé extends entre les noms enfant et parent. Le nom enfant vient en premier : Truck extends Car, pas l’inverse.
N’écrivez pas super sur cette page. Appeler le constructeur parent avec super est la leçon suivante. N’écrivez pas non plus un second horn dans Truck ; la redéfinition viendra plus tard. Aujourd’hui l’enfant reste vide et utilise quand même la méthode parent. Ce corps vide est un enseignement volontaire, pas une erreur à « corriger » en copiant horn dans Truck.

📊 Parent and child on this page

Piece Role
Car parent type that owns horn
Truck child type via extends Car
Yard public starter with main
horn prints beep; written only on Car

Le parent fonctionne encore seul

Un second programme garde le même Car, le même Truck extends Car vide et la même Yard publique. Dans main, construisez un Car et un Truck, et appelez horn sur chacun.

Yard Car and Truck both horn

java
class Car {
    void horn() {
        System.out.println("beep");
    }
}

class Truck extends Car {
}

public class Yard {
    public static void main(String[] args) {
        Car c = new Car();
        Truck t = new Truck();
        c.horn();
        t.horn();
    }
}

Compilez avec javac Yard.java, puis exécutez java Yard. L’écran affiche beep, puis encore beep. La première ligne vient du Car simple. La seconde du Truck qui a hérité horn. Créer un enfant n’a ni supprimé ni cassé le type parent. Les deux objets peuvent appeler le même corps de méthode écrit une fois sur Car. Vous construisez encore chaque objet avec new ; la ligne extends ne crée pas un truck automatiquement.
Ce contraste est le point de contrôle. L’héritage ajoute un chemin enfant à une méthode existante. Il ne vous oblige pas à retirer le parent. Si vous retirez extends Car de Truck, t.horn() ne compile plus, car Truck ne reçoit plus horn. Gardez extends pour l’enfant pédagogique. Préférez le fichier un seul truck pour un beep calme. Préférez le fichier deux objets pour prouver que le parent répond encore.

Comparé aux paths sur Route

Sur la page paths, java Route nommait dossiers et fichiers. Sur cette page, java Yard relie des types avec extends. Gardez les fichiers Route comme historique s’ils sont encore proches ; exécutez java Yard pour les démos d’héritage afin que l’écran corresponde à la leçon.
extends, la réutilisation de la méthode parent et un corps enfant vide sont les nouveaux éléments. Vous connaissez déjà new et les méthodes d’instance des pages OOP précédentes. Aujourd’hui ces pièces rencontrent l’héritage pour la première fois sur ce parcours. Gardez les noms pédagogiques Car, Truck et Yard pour que compiler et exécuter restent courts et clairs.

Ce que cette page laisse pour super

Cette page montre un enfant qui utilise une méthode parent sans écrire super. La page suivante introduit super pour que l’enfant parle au parent volontairement, surtout autour des constructeurs. Restez sur extends et l’appel hérité à horn ici. N’ajoutez pas encore super() comme exigence sur ces démos Yard.

Avant super

Vous pouvez écrire Truck extends Car, construire un Truck et voir beep depuis horn. Vous pouvez aussi construire un Car simple et voir que le parent affiche encore beep. Compilez Yard.java et exécutez java Yard pour chaque démo conservée à tour de rôle. L’enfant est resté vide et a quand même utilisé la méthode parent. La page suivante est super, où l’enfant parle plus directement au parent.
Gardez la démo un seul truck pour un appel hérité clair. Gardez la démo deux objets pour prouver que le parent fonctionne seul. Laissez super hors de cette page pour l’instant. Ces trois habitudes sont le point de contrôle avant de continuer. Quand beep apparaît depuis un Truck qui n’a jamais écrit son propre horn, l’héritage a fait son travail pour cette leçon et vous êtes prêt pour le thème super.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
5
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 Instructions

  • Lisez chaque question attentivement
  • Sélectionnez la meilleure réponse pour chaque question
  • Vous pouvez refaire le quiz autant de fois que vous le souhaitez
  • Votre progression sera affichée en haut