Maison >Java >javaDidacticiel >Héritage
Explication détaillée du mécanisme d'héritage Java : la pierre angulaire de la construction de programmes orientés objet
Le mécanisme d'héritage en Java permet à un objet d'hériter de toutes les propriétés et comportements de l'objet parent, ce qui est le concept de base de la programmation orientée objet (POO). Grâce à l'héritage, nous pouvons créer une nouvelle classe basée sur une classe existante, réutiliser les méthodes et les champs de la classe parent et ajouter de nouvelles méthodes et champs sur cette base.
Qu'est-ce que l'héritage ?
Le mécanisme d'héritage Java permet à une classe (sous-classe ou classe dérivée) d'hériter des propriétés et méthodes d'une autre classe (superclasse ou classe parent). Les sous-classes peuvent accéder aux membres (champs et méthodes) de la superclasse, appliquant des règles de réutilisation et promouvant la hiérarchie des classes. L'héritage incarne la relation « IS-A », également connue sous le nom de relation parent-enfant.
Pourquoi utiliser l'héritage Java ?
Conditions liées à l'héritage
Syntaxe d'héritage Java
<code class="language-java">class 子类名称 extends 超类名称 { // 方法和字段 }</code>Le mot-clé
extends
signifie créer une nouvelle classe dérivée d'une classe existante. « étend » signifie fonctionnalité étendue. Dans la terminologie Java, la classe héritée est appelée classe parent ou superclasse, et la nouvelle classe est appelée sous-classe ou classe enfant.
La figure ci-dessus montre que Programmer
est une sous-classe et Employee
est une superclasse. La relation entre les deux est Programmer IS-A Employee
, ce qui signifie que le programmeur est une sorte d'employé.
Exemple : Programmer.java
<code class="language-java">class Employee { float salary = 40000; } class Programmer extends Employee { int bonus = 10000; public static void main(String args[]) { Programmer p = new Programmer(); System.out.println("程序员薪资:" + p.salary); System.out.println("程序员奖金:" + p.bonus); } }</code>
Types hérités de Java
Selon la relation d'héritage des classes, l'héritage Java est principalement divisé en trois types : l'héritage unique, l'héritage multicouche et l'héritage hiérarchique.
Remarque : Java ne prend pas en charge l'héritage multiple via les classes.
Lorsqu'une classe hérite de plusieurs classes, on parle d'héritage multiple. Par exemple : Héritage multiple en Java
Exemple d'héritage unique
Lorsqu'une classe hérite d'une autre classe, on parle d'héritage unique. Dans l'exemple ci-dessous, la classe Dog
hérite de la classe Animal
, donc un héritage unique.
TestHéritage.java
<code class="language-java">class Animal { void eat() { System.out.println("正在吃..."); } } class Dog extends Animal { void bark() { System.out.println("汪汪..."); } } class TestHéritage { public static void main(String args[]) { Dog d = new Dog(); d.bark(); d.eat(); } }</code>
Exemple d'héritage multi-niveaux
Lorsqu'il existe une chaîne d'héritage, on parle d'héritage multi-niveaux. Dans l'exemple ci-dessous, la classe BabyDog
hérite de la classe Dog
, qui à son tour hérite de la classe Dog
, d'où un héritage multi-niveau. Animal
<code class="language-java">class 子类名称 extends 超类名称 { // 方法和字段 }</code>
Exemple d'héritage hiérarchique
Lorsque deux classes ou plus héritent d'une seule classe, on parle d'héritage hiérarchique. Dans l'exemple ci-dessous, les classes Dog
et Cat
héritent de la classe Animal
, d'où l'héritage hiérarchique.
TestHéritage3.java
<code class="language-java">class Employee { float salary = 40000; } class Programmer extends Employee { int bonus = 10000; public static void main(String args[]) { Programmer p = new Programmer(); System.out.println("程序员薪资:" + p.salary); System.out.println("程序员奖金:" + p.bonus); } }</code>
Pourquoi Java ne prend-il pas en charge l'héritage multiple ? (A ajouter)
Pour réduire la complexité et simplifier le langage, Java ne prend pas en charge l'héritage multiple via les classes.
Réécriture de méthodes et surcharge de méthodes
final
Fonction des mots-clés
final
est utilisé pour empêcher le remplacement de méthode et l'extension de classe :
final
Champ : ne peut pas être réaffecté. final
Méthode : ne peut pas être remplacée. final
Classe : ne peut pas être héritée. Lien de référence : https://www.php.cn/link/9b4192ee086949047cfc64d86d895c2e
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!