Warisan Python OOP: Kelas Induk dan Anak

Pelajari warisan dengan Python OOP. Menguasai subkelas, mengganti metode, menggunakan super(), dan pola pewarisan berganda.

Coba di Editor

Ikhtisar

Warisan adalah salah satu pilar dasar Pemrograman Berorientasi Objek (OOP). Ini adalah mekanisme yang memungkinkan kelas baru (dikenal sebagai anak atau subkelas) untuk mengadopsi atribut dan metode dari kelas yang sudah ada (dikenal sebagai induk atau superkelas). Pola desain ini mendorong penggunaan kembali kode, mengurangi redundansi, dan menetapkan hubungan logis dan hierarkis antara berbagai komponen aplikasi Anda.

Untuk mengimplementasikan pewarisan dengan Python, Anda memasukkan nama kelas induk di dalam tanda kurung selama definisi kelas anak: `kelas Anak(Orang Tua):`. Kelas anak segera mewarisi semua metode dan variabel induknya. Jika anak memerlukan perilaku khusus, ia dapat mengganti metode induk mana pun dengan mendefinisikan ulang metode tersebut menggunakan nama yang sama. Di dalam metode yang diganti, Anda masih bisa memanggil implementasi induknya dengan menggunakan fungsi `super()` bawaan, sehingga memastikan Anda dapat memperluas logika yang sudah ada, bukan mengganti sepenuhnya.

Tidak seperti banyak bahasa yang diketik secara statis, Python secara asli mendukung Warisan Berganda, yang berarti kelas anak dapat mewarisi lebih dari satu kelas induk (misalnya, `kelas SmartDevice(Kamera, Telepon):`). Untuk menyelesaikan metode induk mana yang dijalankan ketika nama bertentangan, Python menggunakan algoritma ketat yang disebut Method Resolusi Order (MRO). Memahami cara menyusun pohon warisan dan menggunakan super() sangat penting untuk merancang arsitektur berorientasi objek yang dapat diperluas.

Kode & Output Eksekusi

Membuat kelas Kendaraan induk dan subkelas Mobil anak yang menggantikan inisialisasi menggunakan super().

inheritance.py
Coba di Editor
class Vehicle:
    def __init__(self, brand, year):
        self.brand = brand
        self.year = year

    def display_info(self):
        return f"{self.year} {self.brand}"

class Car(Vehicle):
    def __init__(self, brand, year, model):
        # Call parent constructor
        super().__init__(brand, year)
        self.model = model

    def display_info(self):
        # Override parent method and extend it
        parent_info = super().display_info()
        return f"{parent_info} {self.model}"

my_car = Car("Ford", 2026, "Mustang")
print(my_car.display_info())
Keluaran Terminal
2026 Ford Mustang

Implementasi Langkah demi Langkah

  • Membuat kelas pengecualian khusus yang mewarisi dari Exception
  • Membangun komponen UI (seperti Tombol) yang diwarisi dari Tampilan generik
  • Mendefinisikan model basis data hierarki (misalnya, Pengguna, Karyawan, Manajer)

Pertanyaan yang Sering Diajukan

Apa yang super() lakukan dalam subkelas?

super() mengembalikan objek sementara dari kelas induk, memungkinkan Anda memanggil metodenya, yang sangat berguna untuk menginisialisasi bidang induk di __init__.

Bisakah Anda mencegah suatu kelas diwarisi?

Python tidak mendukung kata kunci 'final' seperti Java untuk membatasi warisan. Secara konvensional, kami mendokumentasikan maksud kelas, atau menggunakan pemeriksa tipe dengan anotasi @final dari modul pengetikan.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.