Python'da Kalıtım ve Metot Ezme: Adım Adım

Kalıtım, bir sınıfın başka bir sınıftan özellik ve metotları miras almasıdır. Metot ezme (override) ise alt sınıfta üst sınıfın metotunu yeniden yazarak davranışını değiştirmektir.

Üst sınıf (parent class) tanımlarsın, alt sınıf (child class) ondan miras alır. Alt sınıf, üst sınıfın tüm metot ve özelliklerini kullanabilir. Bunu yapmak için alt sınıf tanımlarken parantez içine üst sınıfın adını yazarsın.

Alt sınıfta, üst sınıftan gelen bir metotun aynı adıyla yeni bir versiyonunu yazarsan, bu metot ezme olur. Böylece alt sınıf kendi ihtiyacına göre davranışı değiştirebilir.

Bir hayvan sınıfı ve ondan miras alan köpek ile kedi sınıfları oluşturalım. Her hayvan ses çıkarır ama farklı şekilde.

1class Hayvan:
2def __init__(self, ad):
3self.ad = ad
4
5def ses_cikart(self):
6return "Bilinmeyen ses"
7
8class Kopek(Hayvan):
9def ses_cikart(self):
10return f"{self.ad} havlıyor: Hav hav!"
11
12class Kedi(Hayvan):
13def ses_cikart(self):
14return f"{self.ad} miyavlıyor: Miyav!"
15
16# Kullanım
17kopek = Kopek("Boncuk")
18kedi = Kedi("Pamuk")
19
20print(kopek.ses_cikart())
21print(kedi.ses_cikart())

Çıktı:
```
Boncuk havlıyor: Hav hav!
Pamuk miyavlıyor: Miyav!
```

Burada Kopek ve Kedi sınıfları Hayvan'dan miras aldı. İkisi de ses_cikart() metotunu ezdi. Aynı metot adı kullanılsa da, her sınıf kendi versiyonunu çalıştırıyor.

Bazen alt sınıfta üst sınıfın metotunu tamamen değil, genişletmek istersin. super() kullanarak üst sınıfın metotunu çağırabilirsin:

1class Kopek(Hayvan):
2def ses_cikart(self):
3ust_ses = super().ses_cikart()
4return f"{self.ad} havlıyor: Hav hav!"
5
6kopek = Kopek("Boncuk")
7print(kopek.ses_cikart())

Kalıtım ve metot ezme, kodun tekrar yazılmasını önler ve yapıyı daha düzenli kılar.

konu hakkında tepkinizi verebilirsiniz