Affectation 7: Héritage, super
Mot-clé et méthode Override
Cette affectation démontre l'héritage, le mot-clé super
et la méthode dominante en java. Décomposons le code et sa sortie.
Classe de grand-mère:
Cette classe représente la classe de base (grand-parent). Il a un champ name
et une méthode work()
.
<code class="language-java">package B15; public class Grandma { String name = "Stella"; // Note: Capitalized for consistency int age = 80; public void work() { System.out.println("Grandma is working."); // More descriptive output } }</code>
Classe mère:
Cette classe hérite de Grandma
. Il remplace la méthode work()
et ajoute son propre champ name
. Le mot-clé super
est utilisé pour accéder à la méthode Grandma
name
et work()
.
<code class="language-java">package B15; public class Mother extends Grandma { String name = "Arasi"; // Note: Capitalized for consistency int age = 50; public void work() { System.out.println("Mother is working."); // More descriptive output System.out.println("Mother's name = " + name); System.out.println("Grandma's name = " + super.name); System.out.println("Grandma's age = " + super.age); super.work(); } }</code>
Classe pour enfants:
Cette classe hérite de Mother
. Il remplace la méthode work()
et ajoute une méthode study()
. La méthode main
crée un objet Kid
et appelle ses méthodes.
<code class="language-java">package B15; public class Kid extends Mother { String name = "Suman"; // Note: Capitalized for consistency int age = 30; public static void main(String[] args) { Kid kid = new Kid(); kid.work(); kid.study(); } public void work() { System.out.println("Kid is working."); // More descriptive output System.out.println("Kid's name = " + name); System.out.println("Mother's name = " + super.name); } public void study() { super.work(); System.out.println("Mother's age = " + super.age); System.out.println("Kid's name = " + name); System.out.println("Kid's age = " + age); System.out.println("Kid is studying."); // More descriptive output } }</code>
Explication de sortie:
La sortie montre que la méthode appelle en cascade dans la hiérarchie de l'héritage. Lorsque kid.work()
est appelé, la méthode Kid
work()
est exécutée en premier, l'impression "Kid fonctionne". Ensuite, kid.study()
appelle super.work()
, exécutant la méthode Mother
S work()
, qui à son tour appelle super.work()
à nouveau, exécutant la méthode Grandma
work()
. Le mot-clé super
garantit que la méthode correcte de la classe parent est invoquée. La sortie reflète les valeurs des variables name
et age
à chaque niveau de la hiérarchie d'héritage.
Sortie corrigée et améliorée:
Le code amélioré fournit une sortie plus descriptive, ce qui facilite la compréhension du flux d'exécution. La sortie sera maintenant:
<code>Kid is working. Kid's name = Suman Mother's name = Arasi Mother is working. Mother's name = Arasi Grandma's name = Stella Grandma's age = 80 Grandma is working. Mother's age = 50 Kid's name = Suman Kid's age = 30 Kid is studying.</code>
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!