L'héritage est l'un des concepts fondamentaux de la programmation orientée objet (POO) et Java est un langage qui intègre pleinement ces concepts. L'héritage permet à une classe d'acquérir des propriétés et des comportements d'une autre classe, favorisant ainsi la réutilisation du code et la création d'une hiérarchie de classes. En Java, la syntaxe et les concepts liés à l'héritage sont essentiels à la création d'applications efficaces et bien structurées.

Concept d'héritage

En Java, l'héritage est utilisé pour établir une relation "est-un" entre les classes. Si une classe B est dérivée d'une classe A, on dit que B est un type spécialisé de A. Par exemple, si nous avons une classe « Véhicule » et une classe « Voiture », nous pouvons dire que « Voiture » ​​est un « Voiture » Véhicule", donc "Voiture" hérite de "Véhicule".

Cela signifie que "Car" hérite de toutes les propriétés et méthodes publiques et protégées de la classe "Vehicle", à moins que "Car" ne les remplace (un concept connu sous le nom de substitution). De plus, "Car" peut ajouter ses propres méthodes et propriétés spécifiques.

Syntaxe d'héritage en Java

Pour implémenter l'héritage en Java, nous utilisons le mot-clé extends. Voici un exemple simple de la façon dont l'héritage peut être exprimé :

classe Véhicule {
    // Propriétés et méthodes de la classe Vehicle
}

la classe Car étend le véhicule {
    // Propriétés et méthodes supplémentaires de la classe Car
}

Dans l'exemple ci-dessus, « Voiture » ​​hérite de « Véhicule ». Cela signifie que "Voiture" a accès à toutes les méthodes et propriétés de "Véhicule" (sauf celles privées), et peut également avoir ses propres méthodes et propriétés.

Utilisation du constructeur de superclasse

Lorsqu'une classe hérite d'une autre, le constructeur de la superclasse (la classe dont elle hérite) n'est pas hérité. Pour appeler le constructeur de superclasse, nous utilisons le mot-clé super. Cela se fait généralement sur la première ligne du constructeur de sous-classe :

classe Véhicule {
    Véhicule() {
        // Constructeur de superclasse
    }
}

la classe Car étend le véhicule {
    Voiture() {
        super(); // Appel du constructeur de la classe Vehicle
        // Code supplémentaire pour le constructeur automobile
    }
}

L'utilisation de super est indispensable lorsque la superclasse n'a pas de constructeur par défaut (sans paramètres) ou lorsque l'on souhaite appeler un constructeur spécifique à la superclasse.

Remplacement de méthode

En Java, une sous-classe peut remplacer les méthodes de la superclasse. Cela se fait en déclarant une méthode dans la sous-classe avec la même signature que la méthode dans la superclasse. La substitution permet à la sous-classe de fournir une implémentation spécifique d'une méthode qui existe déjà dans la superclasse.

classe Véhicule {
    vide déplacer() {
        System.out.println("Le véhicule bouge");
    }
}

la classe Car étend le véhicule {
    @Override // Annotation facultative indiquant le remplacement de la méthode
    vide déplacer() {
        System.out.println("La voiture bouge");
    }
}

Dans l'exemple ci-dessus, la méthode move() de la classe "Car" remplace la méthode move() de la classe "Vehicle". L'annotation @Override est facultative, mais il est recommandé de l'utiliser car elle permet d'identifier les erreurs de compilation si la méthode ne correspond pas correctement à une méthode de la superclasse.

Polymorphisme avec héritage

L'héritage et le polymorphisme vont de pair en Java. Le polymorphisme est la capacité de traiter des objets de différentes sous-classes d'une même superclasse comme s'ils étaient du même type. Cela permet d'écrire des méthodes d'une manière plus générique, traitant de la superclasse, mais fonctionnant correctement avec n'importe quelle sous-classe.

Véhicule monVéhicule = new Car();
monVéhicule.move(); // Appel de la méthode move() de Car

Dans l'exemple ci-dessus, même si myVehicle est de type "Vehicle", la méthode move() qui est appelée est celle de la classe "Car", car l'objet réel est une instance de "Car".

Accès aux membres de la superclasse

Lorsqu'une sous-classe remplace un membre de la superclasse, il est parfois nécessaire d'accéder au membre de la superclasse. Cela se fait à l'aide du mot-clé super.

class Car étend Vehicle {
    @Passer outre
    vide déplacer() {
        super.move(); // Appelle la méthode move() de la superclasse Vehicle
        // Code additionnel spécifique à Car
    }
}

Dans l'exemple ci-dessus, super.mover() est utilisé pour appeler la méthode move() de la superclasse "Vehicle" avant d'exécuter du code supplémentaire depuis la classe "Car " sous-classe ".

Contraintes d'héritage

Bien que l'héritage soit puissant, il existe certaines restrictions en Java :

  • Une classe ne peut hériter que d'une seule superclasse (Java ne prend pas directement en charge l'héritage multiple).
  • Classes marquées parfinal ne peut pas être hérité.
  • Les méthodes marquées comme final ne peuvent pas être écrasées.

Conclusion

L'héritage est la pierre angulaire de la POO et constitue un moyen puissant d'organiser et de réutiliser le code. La syntaxe de l'héritage en Java est simple, mais il est important de comprendre les détails et les meilleures pratiques pour utiliser efficacement l'héritage. En créant une hiérarchie de classes avec héritage, nous pouvons créer des applications plus modulaires et plus faciles à maintenir.

Répondez maintenant à l’exercice sur le contenu :

_Laquelle des affirmations suivantes concernant l'héritage en Java est correcte ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Syntaxe de base Java : polymorphisme 15

Page suivante de lebook gratuit :

Syntaxe de base Java : polymorphisme

Temps de lecture estimé : 0 minutes

Téléchargez l'application pour obtenir une certification gratuite et écouter des cours en arrière-plan, même avec l'écran éteint.

+ 9 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

60 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours vidéo et livres
audio gratuits