Inheritance
Pewarisan merupakan konsep dalam pemrograman berbasis objek yang memungkinkan untuk membuat suatu kelas dengan didasarkan pada kelas yang sudah ada sehingga mewarisi semua method dan atributnya. Pewarisan merupakan suatu mekanisme yang memungkinkan seorang pemrogram menciptakan suatu kelas baru berdasarkan kelas yang sudah tersedia tetapi tidak perlu menuliskan kode dari nol. Dengan cara seperti ini,semua method dan atribut yang terdapat pada kelas induk diturunkan ke kelas turunannya. Namun kelas turunannya dapat menambah method baru atau atribut baru tersendiri. Satu kelas dapat diturunkan (inherit) ke kelas yang lain, dan bisa lebih dari satu.
- General class --> parent \/ base class
- Specialized class --> subclass
subclass dapat :
- Menggunakan data\/methods dari base class
- Extends the functionality of base classes
- modify the behaviour of base classes
Manfaat dari inheritance
- reuse of code
- logi way of stucture our classes
- code more clean and easy to debug
Menggunakan inheritance di python
class Parent: #base class
pass
class Child(Parent): #subclass
pass
contoh
class pet:
def __init__(self):
self.name = 'unknown'
def sleep(self):
print 'zzz'
class dog(pet):
def bark(self):
print 'wofff'
dog
danpet
adalah sama-sama classgog
adalah subclass daripet
- Semua yang bisa dilakukan oleh
pet
juga bisa dilakukan olehdog
- tidak semua yang dilakukan
dog
bisa dilakukan olehpet
Method Overriding
Sebuah method dikatakan Method overriding jika method dengan nama yang sama terdapat pada kelas induk dan kelas anaknya. Contoh :
class induk:
def cobaOverride(self):
print "Hi... saya method override di kelas induk"
class turunan(induk):
def cobaOverride(self):
print "Hi... saya method override di kelas anak"
# Deklarasi objek Kelas Induk
objekInduk = induk()
objekInduk.cobaOverride()
# Deklarasi objek kelas anak
objekAnak = turunan()
induk.cobaOverride(objekAnak)
Contoh program Inheritance dengan Overriding :
class Pegawai:
def __init__(self, nama, gaji = 0):
self.nama = nama
self.gaji = gaji
def tunjangan(self, persen):
self.gaji = self.gaji + (self.gaji * persen)
def kerja(self):
print(self.nama, "Pekerjaannya")
def __repr__(self):
return "<Pegawai: (self.nama, self.gaji) nama = %s, gaji = %s>"
class Koki(Pegawai):
def __init__(self,nama):
Pegawai.__init__(self,nama,100000)
def kerja(self):
print(self.nama, "Membuat Makanan")
class Pelayan(Pegawai):
def __init__(self,nama):
Pegawai.__init__(self,nama, 50000)
def kerja(self):
print(self.nama, "Melayani Costumer")
class PizzaRobot(Koki):
def __init__(self, nama):
Koki.__init__(self, nama)
def kerja(self):
print(self.nama, "Membuat Pizza")
# Program Utama
if __name__ == "__main__":
agus = PizzaRobot("Agus")
print(agus)
agus.kerja()
agus.tunjangan(0.20)
print(agus)
print
for kelas in Pegawai, Koki, Pelayan, PizzaRobot:
objek = kelas(kelas.__name__)
objek.kerja()
Output:
<Pegawai: nama = Agus, gaji = 100000>
('Agus', 'Membuat Pizza')
<Pegawai: nama = Agus, gaji = 120000.0>
('Pegawai', 'Pekerjaannya')
('Koki', 'Membuat Makanan')
('Pelayan', 'Melayani Costumer')
('PizzaRobot', 'Membuat Pizza')