Inheritance atau pewarisan menyediakan cara untuk berbagi fungsionalitas di antara class. Misalkan terdapat class Kucing dan Sapi. Class-class tersebut mungkin berbeda satu sama lain, dimana class Kucing memiliki method makan dan class Sapi tidak. Tetapi kedua class tersebut memiliki persamaan karena sama-sama memiliki atribut nama dan warna. Persamaan tersebut dapat dibuat dengan membuat class-class tersebut mewarisi/inherit dari superclass Hewan.
class Hewan:
def __init__(self, nama, warna):
self.nama = nama
self.warna = warna
class Kucing(Hewan):
def makan(self):
print("Kucing sedang makan")
class Sapi(Hewan):
def melahirkan(self):
print("Sapi sedang melahirkan")
binatang = Kucing("catty", "putih")
print(binatang.warna)
binatang.makan()
=====>
putih
Kucing sedang makan
=====>
Sebuah class yang inherit dari class lain disebut dengan subclass. Dan class yang menjadi induk atau meng-inherit ke kelas lain disebut dengan superclass. Jika sebuah class inherit dari class lain dengan nama atribut dan method yang sama, maka atribut dan method tersebut meng-override / menimpanya.
class Hewan:
def __init__(self, nama, warna):
self.nama = nama
self.warna = warna
def makan(self):
print("Sedang makan")
class Kucing(Hewan):
def makan(self):
print("Sedang makan-makan")
binatang = Kucing("catty", "putih")
print(binatang.warna)
binatang.makan()
=====>
putih
Sedang makan-makan
=====>
Pada contoh di atas, Hewan adalah superclass dan Kucing adalah subclass.
Inheritance dapat juga tidak secara langsung. Misalkan class A mewarisi class B, dan class B mewarisi class C.
class A:
def method_a(self):
print("Fungsi A")
class B(A):
def method_b(self):
print("Fungsi B")
class C(B):
def method_c(self):
print("Fungsi C")
objek = C()
objek.method_a()
objek.method_b()
objek.method_c()
=====>
Fungsi A
Fungsi B
Fungsi C
=====>
Fungsi super adalah fungsi pewarisan yang sangat berguna. Fungsi super dapat digunakan untuk menemukan method yang berada pada superclass.
class A:
def metode(self):
print("Fungsi A")
class B(A):
def metode(self):
print("Fungsi B")
super().metode()
B().metode()
=====>
Fungsi B
Fungsi A
=====>
B().metode() memanggil fungsi metode pada superclass.
LANJUTKAN BACA MATERI LENGKAP