Tugasan 7: Warisan, super
Kata Kunci dan Penggantian Kaedah
Tugasan ini menunjukkan warisan, kata kunci super
dan kaedah mengatasi dalam Java. Mari kita pecahkan kod dan outputnya.
Kelas Nenek:
Kelas ini mewakili kelas asas (datuk nenek). Ia mempunyai medan name
dan kaedah 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>
Kelas Ibu:
Kelas ini mewarisi daripada Grandma
. Ia mengatasi kaedah work()
dan menambah medan name
nya sendiri. Kata kunci super
digunakan untuk mengakses kaedah Grandma
dan name
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>
Kelas Kanak-kanak:
Kelas ini mewarisi daripada Mother
. Ia mengatasi kaedah work()
dan menambah kaedah study()
. Kaedah main
mencipta objek Kid
dan memanggil kaedahnya.
<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>
Penjelasan Output:
Output menunjukkan kaedah panggilan melantun ke bawah hierarki warisan. Apabila kid.work()
dipanggil, kaedah Kid
work()
dilaksanakan terlebih dahulu, mencetak "Kid is working." Kemudian, kid.study()
memanggil super.work()
, melaksanakan kaedah Mother
work()
, yang seterusnya memanggil super.work()
sekali lagi, melaksanakan kaedah Grandma
work()
. Kata kunci super
memastikan kaedah yang betul daripada kelas induk digunakan. Output mencerminkan nilai pembolehubah name
dan age
pada setiap peringkat hierarki warisan.
Output yang Dibetulkan dan Diperbaiki:
Kod yang dipertingkatkan menyediakan lebih banyak output deskriptif, menjadikannya lebih mudah untuk memahami aliran pelaksanaan. Outputnya sekarang ialah:
<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>
Atas ialah kandungan terperinci Tugas-7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!