Inheritance (pewarisan) memungkinkan kita untuk mendefinisikan kelas yang mewarisi semua metode dan properti dari kelas lain.
Kelas induk adalah kelas yang mewarisi, juga disebut kelas dasar.
Kelas anak adalah kelas yang diturunkan dari kelas lain, disebut juga kelas turunan.
Section Artikel
Buat Kelas Induk
Setiap kelas bisa menjadi kelas induk, sintaksnya sama dengan membuat kelas pada umumnya.
Contoh:
Buat kelas bernama Person, dengan properti firstname dan lastname, serta metode printname
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) #Gunakan kelas Person untuk membuat objek, lalu jalankan metode printname: x = Person("John", "Doe") x.printname()
Buat Kelas Turunan
Untuk membuat kelas yang mewarisi fungsionalitas dari kelas lain, kirim kelas induk sebagai parameter saat membuat kelas anak:
Contoh:
Buat kelas bernama Student, yang akan mewarisi properti dan metode dari kelas Person
class Student(Person): pass
Catatan: Gunakan kata kunci pass jika Anda tidak ingin menambahkan properti atau metode lain ke kelas.
Sekarang kelas Student memiliki properti dan metode yang sama dengan kelas Person.
Contoh
Gunakan kelas Student untuk membuat objek, lalu jalankan metode printname
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): pass x = Student("Mike", "Olsen") x.printname()
Menambahkan Fungsi init()
Setelah membuat kelas anak yang mewarisi properti dan metode dari induknya.
Maka selanjutnya kita menambahkan fungsi init() ke dalam kelas anak (bukan menggunakan kata kunci pass).
Catatan: Fungsi init() dipanggil secara otomatis setiap kali kelas digunakan untuk membuat objek baru.
Contoh:
Tambahkan fungsi init() ke kelas Student
class Student(Person): def __init__(self, fname, lname): #tambahkan properti dll.
Ketika kita menambahkan fungsi init(), kelas anak tidak akan lagi mewarisi fungsi init() induknya.
Catatan: Fungsi init() anak menggantikan pewarisan fungsi init() induk.
Untuk mempertahankan warisan fungsi init() induk, tambahkan pemanggil fungsi init() induk.
Contoh:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname) x = Student("Mike", "Olsen") x.printname()
Sekarang kita telah berhasil menambahkan fungsi init(), dan mempertahankan warisan dari kelas induk, dan siap untuk menambahkan fungsionalitas dalam fungsi init().
Menggunakan Fungsi super()
Python juga memiliki fungsi super() yang berfungsi untuk membuat kelas anak mewarisi semua metode dan properti dari induknya
Contoh:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) x = Student("Mike", "Olsen") x.printname()
Dengan menggunakan fungsi super(), maka kita tidak harus menggunakan nama elemen induk, karena fungsi ini akan secara otomatis mewarisi metode dan properti dari induknya.
Menambahkan Properti
Contoh:
Tambahkan properti bernama graduationyear ke kelas Student
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019 x = Student("Mike", "Olsen") print(x.graduationyear)
Pada contoh selanjutnya, tahun 2019 harus berupa variabel, dan diteruskan ke kelas Student saat membuat objek student. Untuk melakukannya, tambahkan parameter lain dalam fungsi init().
Contoh:
Tambahkan parameter year, dan teruskan year dengan benar saat membuat objek
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year x = Student("Mike", "Olsen", 2019) print(x.graduationyear)
Menambahkan Metode
Contoh:
Tambahkan metode yang disebut welcome di kelas Student
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Selamat datang", self.firstname, self.lastname, "dikelas", self.graduationyear) x = Student("Mike", "Olsen", 2019) x.welcome()
Jika kita menambahkan metode di kelas anak dengan nama yang sama sebagai fungsi di kelas induk, pewarisan metode induk akan diganti.