Kalıtım Nedir?
İngilizce: Inheritance
Yayın: · Son güncelleme:
Kalıtım Nedir? Kısaca
Kalıtım (inheritance), nesne yönelimli programlamada bir sınıfın başka bir sınıfın özelliklerini ve metotlarını devralmasıdır. Devralan sınıfa alt sınıf, devredilen sınıfa üst sınıf denir.

Kalıtım nedir?
Kalıtım, yeni bir sınıfı mevcut bir sınıfın üzerine kurmaktır. Alt sınıf, üst sınıfın tüm özelliklerini ve metotlarını otomatik olarak alır, üstüne kendine özgü olanları ekler. Biyolojideki kalıtım gibi, çocuk ebeveynden özellik devralır ama kendine ait farklılıkları da vardır.
Örneğin bir Calisan sınıfının adı, maaşı ve izin_al() metodu olsun. Yonetici sınıfı Calisan'dan türetildiğinde bunların hepsini yeniden yazmadan kullanır, ayrıca ekip_ata() gibi yalnız yöneticilere ait bir metot ekler.
Nasıl çalışır?
Python'da kalıtım, sınıf adının yanındaki parantezle kurulur: class Yonetici(Calisan):. Java'da ise extends anahtar kelimesi kullanılır. Alt sınıf, üst sınıftaki bir metodu kendi ihtiyacına göre yeniden tanımlayabilir; buna metodu ezme (override) denir.
Somut bir örnek: Calisan sınıfındaki prim_hesapla() maaşın yüzde 5'ini döndürüyor olsun. Yonetici bu metodu ezerek yüzde 10 hesaplatabilir. Program her iki nesnede de aynı metodu çağırır ama sonuç nesnenin türüne göre değişir. Bu durum çok biçimliliğin de temelini oluşturur.
Nelere dikkat etmeli?
Kalıtım yalnız gerçek bir "türüdür" ilişkisi varsa kullanılmalıdır. Yönetici bir çalışan türüdür, bu doğru bir kalıtımdır. Ama yalnızca birkaç metodu tekrar kullanmak için alakasız sınıfları birbirine bağlamak, ileride değiştirmesi zor bir yapı yaratır.
Derin kalıtım zincirleri de risklidir. Beş katmanlı bir hiyerarşide en üstteki küçük değişiklik, alttaki tüm sınıfları beklenmedik biçimde etkileyebilir. Bu yüzden birçok ekip "kalıtım yerine bileşimi tercih et" ilkesini uygular: bir nesneyi başka nesnelerden parça olarak oluşturmak.
Sıkça Sorulan Sorular
Çoklu kalıtım ne demek?
Bir sınıfın birden fazla üst sınıftan aynı anda özellik devralmasıdır. Python ve C++ buna izin verir; Java ve C# ise sınıflarda çoklu kalıtımı desteklemez, bunun yerine birden fazla arayüz uygulanabilir.
Kalıtım ile arayüz arasındaki fark nedir?
Kalıtımda alt sınıf, üst sınıfın hazır kodunu da devralır. Arayüz ise yalnız hangi metotların olması gerektiğini söyler, bu metotların içini uygulayan sınıf yazar.