Inheritance¶
Pewarisan (Inheritance) memungkinkan kita mendefinisikan kelas yang mewarisi semua metode dan properti dari kelas lain.
Parent Class adalah kelas yang diwarisi, juga disebut kelas dasar.
Child Class adalah kelas yang mewarisi dari kelas lain, juga disebut kelas turunan.
Create a Parent Class¶
Kelas apa pun dapat menjadi kelas induk, jadi sintaksnya sama dengan membuat kelas lainnya:
Buat kelas bernama Person, dengan properti firstname dan lastname, dan metode printname:
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
#Use the Person class to create an object, and then execute the printname method:
x = Person("John", "Doe")
x.printname()
Create a Child Class¶
Untuk membuat kelas yang mewarisi fungsionalitas dari kelas lain, masukkan kelas induk sebagai parameter saat membuat kelas anak:
Buat kelas bernama Student, yang akan mewarisi properti dan metode dari kelas Person:
- class Student(Person):
pass
Catatan
Gunakan kata kunci pass ketika Anda tidak ingin menambahkan properti atau metode lain ke kelas.
Sekarang kelas Student memiliki properti dan metode yang sama dengan kelas Person.
Gunakan kelas Student untuk membuat objek, lalu jalankan metode printname:
x = Student("Mike", "Olsen")
x.printname()
Add the __init__() Function¶
Sejauh ini, kita telah membuat kelas anak yang mewarisi properti dan metode dari induknya.
Kita ingin menambahkan fungsi __init__() ke kelas anak (sebagai pengganti kata kunci pass).
Catatan
Fungsi __init__() dipanggil secara otomatis setiap kali kelas digunakan untuk membuat objek baru.
# Add the __init__() function to the Student class:
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
Ketika Anda menambahkan fungsi __init__(), kelas anak tidak akan lagi mewarisi fungsi __init__() milik induk.
Catatan
Fungsi __init__() anak menggantikan (overrides) pewarisan fungsi __init__() induk.
Untuk mempertahankan pewarisan fungsi __init__() milik induk, tambahkan panggilan ke fungsi __init__() milik induk:
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Sekarang kita telah berhasil menambahkan fungsi __init__(), dan mempertahankan pewarisan kelas induk, dan kita siap untuk menambahkan fungsionalitas dalam fungsi __init__().
Use the super() Function¶
Python juga memiliki fungsi super() yang akan membuat kelas anak mewarisi semua metode dan properti dari induknya:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Dengan menggunakan fungsi super(), Anda tidak perlu menggunakan nama elemen induk, ia akan secara otomatis mewarisi metode dan properti dari induknya.
Add Properties¶
# Add a property called graduationyear to the Student class:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2019
Pada contoh di bawah ini, tahun 2019 seharusnya berupa variabel, dan diteruskan ke kelas Student saat membuat objek mahasiswa. Untuk melakukannya, tambahkan parameter lain dalam fungsi __init__():
# Add a year parameter, and pass the correct year when creating objects:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year
x = Student("Mike", "Olsen", 2019)
Add Methods¶
# Add a method called welcome to the Student class:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year
def welcome(self):
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
Jika Anda menambahkan metode di kelas anak dengan nama yang sama dengan fungsi di kelas induk, pewarisan metode induk akan ditimpa.