İçeriğe geç
parazade

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?
İçindekiler
  1. Kalıtım nedir?
  2. Nasıl çalışır?
  3. Nelere dikkat etmeli?

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.

İlgili terimler

Çok Biçimlilik(Polymorphism)Çok biçimlilik (polymorphism), nesne yönelimli programlamada aynı adlı metot çağrısının, çağrıldığı nesnenin türüne göre farklı biçimde çalışmasıdır. Böylece farklı nesneler tek ve ortak bir arayüzle kullanılabilir.Sınıf(Class)Sınıf (class), nesne yönelimli programlamada aynı türden nesnelerin hangi verileri ve davranışları taşıyacağını tanımlayan şablondur. Sınıftan üretilen her somut örneğe nesne denir.Arayüz(Interface)Arayüz (interface), nesne yönelimli programlamada bir sınıfın hangi metotları sağlaması gerektiğini tanımlayan, ancak bu metotların nasıl çalışacağını belirtmeyen sözleşmedir. Günlük dilde arayüz, kullanıcının yazılımla etkileşim kurduğu ekranı da ifade eder.Nesne Yönelimli Programlama(Object-Oriented Programming)Nesne yönelimli programlama (OOP), yazılımı veri ve bu veri üzerinde çalışan davranışları bir arada tutan nesneler etrafında düzenleyen programlama yaklaşımıdır. Kapsülleme, kalıtım, çok biçimlilik ve soyutlama temel ilkeleridir.Özellik(Feature)Özellik (feature), makine öğrenmesinde her bir örneği tanımlayan ve modelin tahmin yaparken girdi olarak kullandığı ölçülebilir nitelik ya da değişkendir. Örneğin ev fiyatı tahmininde metrekare, oda sayısı ve konum birer özelliktir.Metot(Method)Metot (method), nesne yönelimli programlamada bir sınıfa ya da nesneye ait olan fonksiyondur. Nesnenin verisiyle çalışır ve genellikle `nesne.metot()` biçiminde çağrılır; örneğin `hesap.para_yatir(500)` bir metot çağrısıdır.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.