Kata kunci super digunakan dalam situasi yang berbeda. Sebelum memulai posting ini, kami mendorong Anda untuk belajar tentang warisan di Jawa untuk pemahaman yang lebih baik.
Apa kata kunci super di Jawa?
Super adalah kata kunci yang dapat digunakan untuk memanggil metode superclass yang diganti, serta untuk merujuk ke bidang tersembunyi dari superclass.Mengapa dan kapan menggunakan kata kunci super?
Kata kunci super Java memiliki tiga penggunaan eksplisit.- Mengakses anggota data kelas induk saat kelas anak juga memiliki anggota data dengan nama yang sama.
- Panggil konstruktor default atau parameter dari kelas induk di kelas anak.
- Panggil metode kelas induk di kelas anak jika anak memiliki metode yang diganti.
Contoh 1 - Mengakses anggota data orang tua
Contoh 1 mengilustrasikan bagaimana atribut atau anggota data kelas Kendaraan dapat diakses di kelas anak tipe Mobil . Pastikan Anda menjalankan cuplikan di bawah ini 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();
}
}
Keluaran
Nama Mobil Saya: mobil Orang Tua Saya Nama Kendaraan: kendaraan
Contoh 2 - Akses konstruktor induk di kelas anak
Memanggil super() secara eksplisit memungkinkan Anda mengakses konstruktor default atau parameter dari kelas induk di kelas anak. Berikut adalah contoh konstruktor berparameter. Konstruktor kelas parent yaitu Shape dipanggil (menggunakan super() ) di kelas child yaitu Triangle untuk mengatur atribut. Jalankan program di bawah ini untuk menguji hasilnya 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);
}
}
Keluaran
Shape() konstruktor berparameter disebut! Triangle() konstruktor berparameter disebut! Segitiga Alfa Kuning
Tantangan Cepat : Mendesain ulang program di atas dengan menggunakan konstruktor default untuk menguji pembelajaran Anda. Juga, lihat bagaimana super() berbeda dari super(arg) .
Contoh 3 - Akses metode pengganti induk di kelas anak
Contoh 3 menunjukkan bagaimana Anda dapat mengakses metode kelas induk yang juga ditentukan oleh kelas anak. Kelas induk Suara dalam program di bawah ini mendefinisikan metode voice() . Kelas anak Drum juga memiliki metode dengan nama yang sama yaitu voice() . Itu berarti suara metode ditimpa oleh subkelas. Jalankan program di bawah ini untuk mempelajari bagaimana kata kunci super diperlukan untuk menggunakan metode kelas induk di 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();
}
}
Keluaran
Shape() konstruktor berparameter disebut! Triangle() konstruktor berparameter disebut! Segitiga Alfa Kuning
GO TO FULL VERSION