โ Kembali ke Konsep OOP
๐ณ
Pilar
Inheritance (Pewarisan)
Memungkinkan sebuah class mewarisi state dan perilaku dari class induknya, membentuk relasi "is-a".
Masalahnya
Menduplikasi field dan method di class-class yang mirip bikin perawatan jadi repot: perbaikan atau fitur yang ditambahkan di satu tempat harus disalin manual ke tempat lain.
Cara Kerja
- โบSubclass mewarisi field dan method dari superclass dan bisa meng-override perilakunya
- โบMemodelkan relasi "is-a", misalnya Dog adalah Animal
- โบHierarki yang terlalu dalam bisa kaku dan rapuh; pilih composition jika relasinya bukan benar-benar "is-a"
- โบAbstract base class mendefinisikan kontrak bersama yang wajib dipenuhi subclass
Kapan Digunakan
โBeberapa tipe berbagi field/perilaku yang sama dengan spesialisasi (Shape โ Circle, Square)
โBase class dari framework yang menyediakan perilaku default (UIViewController, Activity)
โMemodelkan taksonomi alami dengan relasi "is-a" yang jelas
Contoh di Dunia Nyata
๐
iOS
UIButton mewarisi UIControl, yang mewarisi UIView
๐ค
Android
AppCompatActivity extends FragmentActivity extends Activity
๐
Web
HTMLInputElement dan HTMLButtonElement sama-sama extends HTMLElement
Contoh Kode
Swift
class Animal {
let name: String
init(name: String) { self.name = name }
func makeSound() -> String {
return "..."
}
}
class Dog: Animal {
override func makeSound() -> String {
return "Woof!"
}
}
class Cat: Animal {
override func makeSound() -> String {
return "Meow!"
}
}
let animals: [Animal] = [Dog(name: "Rex"), Cat(name: "Whiskers")]
for animal in animals {
print("\(animal.name): \(animal.makeSound())")
}