Kata Kunci super
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 21 dari 87.
Kata kunci super menyediakan cara bagi subclass untuk merujuk ke parent class-nya. Ini penting saat kamu perlu mengakses anggota atau konstruktor parent class dari dalam child class.
Penggunaan super yang paling umum adalah memanggil konstruktor parent. Ini harus menjadi pernyataan pertama dalam konstruktor subclass:
public class Vehicle {
private String brand;
public Vehicle(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
}
public class Car extends Vehicle {
private int doors;
public Car(String brand, int doors) {
super(brand); // Harus berada di baris pertama
this.doors = doors;
}
}Kamu juga dapat menggunakan super untuk memanggil method induk, yang sangat berguna terutama ketika subclass memiliki method dengan nama yang sama:
public class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
public class Cat extends Animal {
public void makeSound() {
super.makeSound(); // Memanggil versi Animal
System.out.println("Meow!");
}
}Anggap super sebagai kebalikan dari this. Sementara this merujuk ke object saat ini, super merujuk ke bagian class induk dari object tersebut. Perbedaan ini menjadi sangat penting saat membangun hierarki class yang class turunannya perlu memperluas, bukan sepenuhnya menggantikan, perilaku class induk.
Tantangan
MudahMari buat sistem peralatan yang menunjukkan cara subclass menggunakan super untuk memanggil konstruktor parent dan memperluas perilaku method parent.
Kamu akan membuat tiga file untuk mengatur kodemu:
Appliance.java: Buat class parent yang mewakili peralatan rumah tangga apa pun. Class ini harus memiliki:- Field private untuk
brandperalatan (String) - Field private untuk
wattage(int) - Konstruktor yang menerima kedua nilai dan menginisialisasinya
- Method
getBrand()yang mengembalikan brand - Method
getWattage()yang mengembalikan wattage - Method
getInfo()yang mengembalikan:[brand] - [wattage]W
- Field private untuk
WashingMachine.java: Buat subclass yang mewarisi Appliance. Mesin cuci memiliki semua yang dimiliki peralatan, ditambah fitur khususnya sendiri:- Field private untuk
capacity(int) yang mewakili kapasitas muatan dalam kg - Konstruktor yang menerima brand, wattage, dan capacity, gunakan
super(brand, wattage)untuk menginisialisasi bagian parent, lalu tetapkan capacity - Method
getCapacity()yang mengembalikan capacity - Method
getInfo()yang memanggilgetInfo()milik parent menggunakansuper.getInfo()dan memperluasnya agar mengembalikan:[parent info], Capacity: [capacity]kg
- Field private untuk
Main.java: Buat sebuah WashingMachine dan tampilkan informasi lengkapnya. Kamu akan menerima tiga input: brand (String), wattage (int), dan capacity (int). Cetak hasil pemanggilangetInfo()pada washing machine-mu.
Kamu akan menerima tiga input: nama brand, wattage, dan capacity.
Perhatikan bahwa super memiliki dua fungsi di sini: memanggil konstruktor parent untuk menginisialisasi field yang diwarisi, dan memanggil method parent untuk mengembangkan perilakunya, bukan menggantinya sepenuhnya.
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String brand = scanner.nextLine();
int wattage = scanner.nextInt();
int capacity = scanner.nextInt();
// TODO: Buat object WashingMachine dengan nilai input
// TODO: Cetak hasil pemanggilan getInfo() pada mesin cuci
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online