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.

Preview