Kalıtım, bir sınıfın (alt sınıf veya çocuk) başka bir sınıfın (üst sınıf veya ebeveyn) alanlarını ve yöntemlerini yeniden kullanmasını ve genişletmesini sağlar. Bir is-a ilişkisini modellenir: Dog is an Animal.
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Dog(Animal): # Dog inherits everything from Animal
def bark(self): # ...and adds new behavior
return "Woof!"
d = Dog("Rex")
print(d.eat()) # "Rex is eating" → inherited, not rewritten
print(d.bark()) # "Woof!" → Dog-specific
Dog __init__ ve eat'i ücretsiz olarak aldı ve bark'ı ekledi. Alt sınıf, davranışı değiştirmek için kalıtılan yöntemleri geçersiz kılabilir.
| Avantaj | Risk |
|---|---|
| Paylaşılan kodu yeniden kullan | Ebeveyn sınıfla sıkı bağlantı |
| Gerçek hiyerarşileri modelle | Kırılgan temel sınıf — ebeveyn değişiklikleri çocukları bozar |
| Ortak bir tür aracılığıyla Polimorfizm | Derin ağaçlar takip edilmesi zor hale gelir |
Genel bir kural: ilişki gerçekten "has-a" değil "is-a" olduğunda kalıtımdan ziyade bileşimi tercih edin.
Kalıtım en çok yanlış kullanılan OOP özelliğidir: kodu paylaşmak için kullanmak cazip gelir, bu da ilgisiz sınıfları birbirine bağlar.
Doğru şekilde kullanıldığında — yalnızca gerçek is-a ilişkileri için — size yeniden kullanım artı polimorfizm sağlar ve birçok alt türü ortak ebeveynleri aracılığıyla eşit şekilde ele almanızı sağlar.
Junior'dan Senior'a detaylı cevaplarla bir BT mülakat soruları kütüphanesi.
Bağış Yap