Pewarisan Dasar (extends)
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 20 dari 87.
Inheritance adalah salah satu pilar utama OOP. Fitur ini memungkinkan sebuah class memperoleh property dan method dari class lain, mendorong penggunaan ulang kode dan membentuk hierarki alami di antara class.
Di Java, kamu membuat hubungan pewarisan menggunakan kata kunci extends. Class yang mewarisi disebut subclass (atau class anak), dan class yang diwarisi disebut superclass (atau class induk).
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating");
}
public String getName() {
return name;
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name); // Memanggil konstruktor induk
}
public void bark() {
System.out.println(getName() + " says woof!");
}
}class Dog secara otomatis mewarisi method eat() dan method getName() dari Animal. class ini juga dapat mendefinisikan method sendiri seperti bark():
Dog myDog = new Dog("Buddy");
myDog.eat(); // Diwarisi: "Buddy is eating"
myDog.bark(); // method sendiri: "Buddy says woof!"Anggap pewarisan sebagai hubungan "adalah". Dog adalah Animal, jadi masuk akal jika Dog mewarisi Animal. Hubungan ini memungkinkan kamu membangun class khusus yang berbagi fungsi umum sekaligus menambahkan perilaku uniknya sendiri.
Tantangan
MudahMari kita bangun sistem kendaraan sederhana yang menunjukkan pewarisan dalam praktik. Kamu akan membuat class induk yang menyimpan property umum kendaraan, lalu class anak yang memperluasnya dengan perilaku khusus.
Kamu akan mengatur kodemu dalam tiga file:
Vehicle.java: Buat class induk yang merepresentasikan kendaraan apa pun. Class ini harus memiliki:- Field private untuk
brandkendaraan (String) - Constructor yang menerima nama brand dan menetapkannya ke field. (Pemanggilan
super()tidak diperlukan di sini, karena Vehicle berada di puncak hierarki.) - Method
getBrand()yang mengembalikan brand - Method
start()yang mencetak:[brand] is starting
- Field private untuk
Motorcycle.java: Buat subclass yang mewarisi Vehicle. Sepeda motor adalah kendaraan, jadi hubungan "is-a" ini membuat pewarisan sesuai. Motorcycle-mu harus:- Menggunakan
extendsuntuk mewarisi Vehicle - Memiliki constructor yang menerima brand dan meneruskannya ke class induk menggunakan
super(brand) - Menambahkan method sendiri,
wheelie(), yang mencetak:[brand] is doing a wheelie!
- Menggunakan
Main.java: Satukan semuanya dengan membuat object Motorcycle dan menunjukkan perilaku yang diwarisi serta perilaku uniknya. Kamu akan menerima satu input: nama brand. Cetak dua baris dengan memanggil:- Method
start()yang diwarisi - Method
wheelie()milik Motorcycle
- Method
Kamu akan menerima satu input: nama brand (String) untuk sepeda motormu.
Perhatikan bagaimana Motorcycle otomatis memiliki akses ke start() dan getBrand() tanpa menulis ulang keduanya. Itulah kekuatan pewarisan!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String brand = scanner.nextLine();
// TODO: Buat object Motorcycle dengan brand tersebut
// TODO: Panggil method start() yang diwarisi
// TODO: Panggil method wheelie()
}
}
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