Inheritance dengan extends
extends mewarisi properti dan method dari class induk, dan super() wajib dipanggil di constructor anak sebelum memakai this. Peringatan dari pengalaman: pewarisan berlapis-lapis membuat kode sulit dilacak — di praktik modern, komposisi lebih disukai daripada pewarisan. Sebelum memakai extends, tanyakan apakah hubungannya benar-benar 'adalah sebuah', bukan sekadar 'punya beberapa kemiripan' — pertanyaan itu mencegah hierarki yang menyulitkan.
👀 Contoh dulu
class Hewan {
constructor(nama) { this.nama = nama; }
suara() { return '...'; }
}
class Kucing extends Hewan {
constructor(nama, warna) {
super(nama); // WAJIB duluan, sebelum pakai this
this.warna = warna;
}
suara() { return 'Meong'; } // menimpa method induk
}
const k = new Kucing('Oyen', 'kuning');
console.log(k.nama, k.warna, k.suara());Hasilnya: Oyen kuning Meong
💡 Kucing mewarisi properti nama dari Hewan lewat super(), dan boleh menimpa method induk dengan versinya sendiri.
📝 Sekarang giliranmu
Buat class Diskon extends Produk dengan constructor yang menerima nama, harga, potongan, memanggil super(nama, harga), dan method hargaAkhir(). Uji dan tampilkan hasilnya.