Modul 5 — Pemrograman Berorientasi Objek (PBO / OOP)

5.3 Pewarisan (Inheritance)

Konsep Superclass vs Subclass, relasi 'is-a', sintaks class Child(Parent), pewarisan bertingkat (multilevel), pemanggilan super().__init__(), method overriding, dan fungsi verifikasi isinstance/issubclass.

Progres disimpan di browser ini saja.

A. Konsep Dasar Superclass dan Subclass

Inheritance (pewarisan) memungkinkan sebuah class baru mewarisi seluruh kapabilitas (atribut dan method) dari class yang sudah ada tanpa perlu menulis ulang kodenya dari nol:

IstilahMakna / PeranContoh Hubungan 'is-a'
Superclass (Parent / Base Class)Class induk utama yang mewariskan properti dan method miliknya.`Character` adalah superclass bagi seluruh jenis pahlawan.
Subclass (Child / Derived Class)Class anak turunan yang mewarisi fitur induk dan dapat menambahkan fitur baru yang spesifik.`Mage` adalah subclass (Mage *is a* Character).

Sintaks Deklarasi: Nama di dalam tanda kurung adalah Superclass (Induk)!<br>`class Subclass(Superclass):` artinya class `Subclass` mewarisi class `Superclass`.

B. Implementasi Kode & Pewarisan Bertingkat (Multilevel)

class Character:
    def __init__(self, name):
        self.name = name

class Hero(Character):            # Hero mewarisi Character
    def attack(self):
        return self.name + ' menyerang musuh!'

class Mage(Hero):                 # Mage mewarisi Hero (dan otomatis mewarisi Character)
    def cast_spell(self):
        return self.name + ' mengeluarkan sihir api!'

m = Mage('Merlin')
print(m.name)          # Output: Merlin (diwarisi dari kakek: Character)
print(m.attack())      # Output: Merlin menyerang musuh! (diwarisi dari ayah: Hero)
print(m.cast_spell())  # Output: Merlin mengeluarkan sihir api! (method milik Mage sendiri)

C. Penggunaan Fungsi `super()`

Jika class turunan memiliki constructor `__init__` sendiri untuk menambahkan atribut khusus, kita wajib memanggil constructor induk menggunakan fungsi `super().__init__(...)`:

class Hero(Character):
    def __init__(self, name, power):
        super().__init__(name)    # Mendelegasikan inisialisasi 'name' ke class induk
        self.power = power        # Atribut khusus tambahan untuk Hero

h = Hero('Arthur', 75)
print(h.name, h.power)   # Output: Arthur 75

D. Pemeriksaan Tipe: isinstance() dan issubclass()

print(isinstance(m, Mage))        # True (m adalah objek dari Mage)
print(isinstance(m, Character))   # True (m otomatis adalah Character karena hubungan pewarisan)
print(issubclass(Hero, Character))# True (Hero adalah subclass dari Character)

Latihan Soal

Pilih jawaban, tekan Check, lalu baca pembahasannya.

Benar 0 / 3

Soal 1mudah

Perhatikan deklarasi class berikut: class Hero(Character): pass Berdasarkan sintaks di atas, relasi pewarisan yang tepat adalah ...

Soal 2sedang

Diberikan struktur hierarki class berikut: class Character: def __init__(self, name): self.name = name class Enemy(Character): pass class Boss(Enemy): pass b = Boss('Dragon') Apakah objek b memiliki atribut name?

Soal 3sedang

Instruksi yang tepat di dalam constructor subclass untuk memanggil dan mengeksekusi constructor milik superclass agar atribut induk terinisialisasi dengan sempurna adalah ...