Kata kunci super digunakan dalam situasi yang berbeza. Sebelum memulakan siaran ini, kami menggalakkan anda mempelajari tentang warisan di Jawa untuk pemahaman yang lebih baik.
Apakah kata kunci super dalam Java?
Super ialah kata kunci yang boleh digunakan untuk menggunakan kaedah ganti kelas super, serta merujuk kepada medan tersembunyi kelas super.Mengapa dan bila untuk menggunakan kata kunci super?
Kata kunci super Java mempunyai tiga kegunaan eksplisit.- Akses ahli data kelas induk apabila kelas anak juga mempunyai ahli data dengan nama yang sama.
- Panggil pembina lalai atau parameter bagi kelas induk dalam kelas anak.
- Panggil kaedah kelas induk dalam kelas kanak-kanak jika kanak-kanak mempunyai kaedah ganti.
Contoh 1 - Akses ahli data ibu bapa
Contoh 1 menggambarkan bagaimana atribut atau ahli data kelas Kenderaan boleh diakses dalam kelas kanak-kanak jenis Kereta . Pastikan anda menjalankan coretan di bawah untuk memahami dengan baik.
class Vehicle {
String name = "vehicle";
}
class Car extends Vehicle {
String name = "car";
public void printMyName() {
System.out.println(name);
}
public void printParentName() {
// use super keyword to access
// parent's data member / attribute
System.out.println(super.name);
}
public static void main(String[] args) {
Car myCar = new Car();
System.out.print("My Car's Name: ");
myCar.printMyName();
// printing the parent's name
// using the super keyword
System.out.print("My Parent Vehicle's Name: ");
myCar.printParentName();
}
}
Pengeluaran
Nama Kereta Saya: kereta Nama Kenderaan Ibu Bapa Saya: kenderaan
Contoh 2 - Akses pembina ibu bapa dalam kelas anak
Memanggil super() secara eksplisit membolehkan anda mengakses kedua-dua pembina lalai atau parameter bagi kelas induk dalam kelas anak. Berikut ialah contoh pembina parameter. Induk iaitu Pembina kelas Shape dipanggil (menggunakan super() ) dalam anak iaitu kelas Triangle untuk menetapkan atribut. Jalankan program di bawah untuk menguji output untuk diri sendiri.
public class Shape {
String name;
public Shape(String n) {
System.out.println("Shape() parameterized constructor called!");
name = n;
}
}
class Triangle extends Shape {
int sides = 3;
String color;
public Triangle(String n, String c) {
// The super keyword calls the parameterized
// constructor of the parent (Shape) with
// 'n' as a parameter
super(n);
System.out.println("Triangle() parameterized constructor called!");
this.color = c;
}
public static void main(String[] args) {
Triangle myTriangle = new Triangle("Triangle Alpha", "Yellow");
System.out.println(myTriangle.name);
System.out.println(myTriangle.color);
}
}
Pengeluaran
Pembangun berparameter Shape() dipanggil! Triangle() pembina berparameter dipanggil! Segitiga Alpha Yellow
Cabaran Pantas : Reka bentuk semula program di atas dengan menggunakan pembina lalai untuk menguji pembelajaran anda. Juga, lihat bagaimana super() berbeza daripada super(arg) .
Contoh 3 - Akses kaedah ganti ibu bapa dalam kelas anak
Contoh 3 menunjukkan cara anda boleh mengakses kaedah kelas induk yang juga ditentukan oleh kelas anak. Bunyi kelas induk dalam atur cara di bawah mentakrifkan kaedah voice() . Drum kelas kanak-kanak juga mempunyai kaedah dengan nama yang sama iaitu voice() . Ini bermakna suara kaedah ditindih oleh subkelas. Jalankan program di bawah untuk mengetahui cara kata kunci super diperlukan untuk menggunakan kaedah kelas induk dalam kelas anak.
public class Sound {
public void voice() {
System.out.println("Play sound!");
}
}
class Drum extends Sound {
public void voice() {
System.out.println("Play drums!");
}
public void play() {
// The super keyword calls the
// voice() method of the parent
super.voice();
voice();
}
public static void main(String[] args) {
Drum myDrum = new Drum();
myDrum.play();
}
}
Pengeluaran
Pembangun berparameter Shape() dipanggil! Triangle() pembina berparameter dipanggil! Segitiga Alpha Yellow
GO TO FULL VERSION