目次  
1. Gambaran Umum Pewarisan Python
Dalam Python, pewarisan adalah mekanisme di mana kelas anak mewarisi fungsi dan atribut dari kelas induk. Hal ini meningkatkan kemampuan reuse kode dan efisiensi pemeliharaan. Ini merupakan salah satu konsep penting dalam pemrograman berorientasi objek (OOP), terutama berguna dalam pengembangan sistem berskala besar dan proyek jangka panjang.Peran Dasar Pewarisan
- Reuse kode: Karena fungsi kelas yang sudah ditulis sekali dapat digunakan oleh kelas lain, kode yang duplikat dapat dihindari.
- Kemudahan pemeliharaan: Karena perubahan pada kelas induk secara otomatis tercermin pada kelas anak, perbaikan dan penambahan fitur dapat dilakukan secara efisien.
class ParentClass:
    def greet(self):
        print("Halo, ini kelas induk.")
class ChildClass(ParentClass):
    def greet(self):
        print("Halo, ini kelas anak.")ChildClass menimpa metode ParentClass. Karena metode greet di-override, kelas anak menampilkan salam yang unik.2. Pewarisan Tunggal di Python
Pewarisan tunggal adalah bentuk di mana satu kelas induk mewariskan fungsinya ke satu kelas anak. Ini adalah bentuk dasar pewarisan di Python, yang memungkinkan menjaga kesederhanaan kode sekaligus menambah kemampuan ekspansi.Sintaks Dasar Pewarisan Tunggal dan Contohnya
class Car:
    def __init__(self, brand, color):
        self.brand = brand
        self.color = color
    def describe(self):
        print(f"Mobil ini berwarna {self.color} dengan merek {self.brand}.")
class ElectricCar(Car):
    def __init__(self, brand, color, battery_size):
        super().__init__(brand, color)
        self.battery_size = battery_size
    def describe_battery(self):
        print(f"Kapasitas baterai adalah {self.battery_size}kWh.")ElectricCar mewarisi fungsi kelas Car sekaligus menambahkan fungsi penjelasan kapasitas baterai. Dengan menggunakan super(), konstruktor kelas induk dipanggil untuk menginisialisasi atribut umum (merek dan warna).3. Override Metode
Override adalah fitur di mana kelas anak mendefinisikan kembali metode kelas induk. Dengan cara ini, Anda dapat memanfaatkan metode kelas induk sambil mengubah perilaku di kelas anak。Contoh Override
class Animal:
    def speak(self):
        print("Suara hewan")
class Dog(Animal):
    def speak(self):
        print("Guk-guk!")Dog meng-override metode speak dari kelas Animal. Dengan demikian, pada instance kelas Dog akan mencetak “Guk-guk”, sedangkan pada instance kelas Animal akan menampilkan “Suara hewan”.4. Pewarisan Berganda
Pewarisan berganda memungkinkan satu kelas anak mewarisi dari beberapa kelas induk. Dengan cara ini, fungsi-fungsi dari kelas yang berbeda dapat digabungkan ke dalam satu kelas, tetapi implementasinya dapat menjadi kompleks, jadi perlu berhati-hati.Contoh dan Hal-hal yang Perlu Diperhatikan pada Pewarisan Berganda
class A:
    def greet(self):
        print("Salam A")
class B:
    def greet(self):
        print("Salam B")
class C(A, B):
    pass
c = C()
c.greet()  # Menampilkan "Salam A" (kelas pertama diprioritaskan sesuai MRO)C.mro(). Pewarisan berganda kuat, tetapi Anda harus menggunakannya dengan memperhatikan konflik antar kelas induk dan urutan metode.
5. Contoh Praktis Menggunakan Pewarisan
Pewarisan banyak berguna dalam pemrograman sehari-hari. Misalnya, dalam sistem manajemen karyawan perusahaan, dengan mewarisi kelas karyawan dasar ke kelas dengan jabatan tertentu, memungkinkan penggunaan kembali kode dan perluasan.Contoh Sistem Manajemen Karyawan Praktis
class Employee:
    def __init__(self, first, last, pay):
        self.first = first
        self.last = last
        self.pay = pay
    def fullname(self):
        return f'{self.first} {self.last}'
class Manager(Employee):
    def __init__(self, first, last, pay, employees=None):
        super().__init__(first, last, pay)
        self.employees = employees if employees is not None else []
    def add_employee(self, employee):
        if employee not in self.employees:
            self.employees.append(employee)
    def print_employees(self):
        for emp in self.employees:
            print(emp.fullname())Manager mewarisi kelas Employee dan menambahkan fungsi manajemen karyawan. Sambil mempertahankan fungsi umum kelas induk, fungsi diperluas sesuai dengan jabatan tertentu.6. Praktik Terbaik Pewarisan dan Perbandingannya dengan Komposisi
Pewarisan sangat kuat, tetapi jika digunakan secara berlebihan dapat meningkatkan risiko kode menjadi rumit. Khususnya, pewarisan berganda dapat membuat hubungan antar kelas menjadi kompleks, sehingga harus digunakan dengan hati-hati. Dalam kasus seperti ini, disarankan untuk menggunakan komposisi alih-alih pewarisan.Contoh Komposisi
Komposisi adalah pola desain di mana sebuah kelas memiliki kelas lain sebagai bagian (instansi) untuk mendelegasikan fungsionalitas.class Engine:
    def start(self):
        print("Mesin telah dimulai.")
class Car:
    def __init__(self, engine):
        self.engine = engine
    def start(self):
        self.engine.start()
engine = Engine()
car = Car(engine)
car.start()  # "Mesin telah dimulai." ditampilkan
 
 


