# Kalıtım

Adres: https://softwaredictionary.org/tr/terimler/inheritance
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Inheritance
Türkçe karşılığı: miras alma
Okunuşu: inheritıns

Kısaca: Kalıtım, yeni bir sınıfın mevcut bir sınıfın alanlarını ve metotlarını yeniden kullanmasını, genişletmesini ve geçersiz kılmasını sağlayan OOP özelliğidir.

## Programlamada kalıtım nedir?

Kalıtım, mevcut bir sınıfa dayanan yeni bir sınıf oluşturmanızı sağlar. Alt sınıf (child class ya da subclass) adı verilen yeni sınıf, taban sınıf ya da üst sınıf (superclass) olarak da bilinen ebeveyn sınıfın alanlarını ve metotlarını otomatik olarak alır, kendi üyelerini ekleyebilir veya mevcut olanları değiştirebilir. Bir “-dir” ilişkisini modeller: bir `Dog` bir `Animal`'dır, dolayısıyla `Dog`, `Animal`'dan kalıtım alabilir.

Bir nesnede bir metot çağırdığınızda dil önce onu nesnenin kendi sınıfında arar, ardından bulana dek ebeveyn sınıflar zincirinde yukarı çıkar. Alt sınıf bir metodu geçersiz kılabilir (override); yani aynı adla kendi sürümünü sağlar ve `super` gibi bir anahtar sözcükle ebeveynin sürümünü yine de çağırabilir. Java, C# ve JavaScript yalnızca tek bir ebeveyn sınıfa izin verir; C++ ve Python ise bir sınıfın birden çok ebeveyni olmasına izin verir.

Nesilden nesile aktarılan bir aile tarifini düşünün: her aşçı aslını devralır, ancak bir malzemeyi değiştirebilir ya da bir adım ekleyebilir. Kalıtım kullanıcı arayüzü framework'lerinde, oyun motorlarında ve standart kütüphanelerde yaygındır; örneğin yerleşik bir `Error` ya da `Exception` sınıfını genişleten özel bir hata türü oluşturduğunuzda olduğu gibi.

Kalıtım sıklıkla, bir sınıfın ebeveyni genişletmek yerine başka nesneleri tutup işi onlara devrettiği bileşimle (composition) karşılaştırılır. Derin kalıtım ağaçları sıkı bağlılık yaratır, çünkü ebeveyndeki bir değişiklik her alt sınıfı bozabilir; bu yüzden yaygın bir kılavuz, kalıtım yerine bileşimi tercih etmek ve kalıtımı gerçek “-dir” ilişkilerine saklamaktır. Kalıtım, bir sözleşmeyi paylaşan ama kod paylaşmayan interface uygulamaktan da farklıdır.

## Önemli noktalar

- Alt sınıf, ebeveyn sınıfının alanlarını ve metotlarını kalıtım yoluyla alır.
- Alt sınıflar yeni üyeler ekleyebilir ve miras alınan metotları geçersiz kılabilir.
- `super`, ebeveynin kurucusunu ya da bir metodun ebeveyndeki sürümünü çağırır.
- Gerçek “-dir” ilişkileri için kullanın; “-sahiptir” ilişkileri için bileşimi tercih edin.
- Çoğu dil yalnızca tek bir ebeveyn sınıfa izin verir; C++ ve Python birden çoğuna izin verir.

## Örnek: Python'da ebeveynini genişleten ve geçersiz kılan bir alt sınıf

```python
class Animal:
    def __init__(self, name):
        self.name = name
    def describe(self):
        return f"{self.name} is an animal"

class Dog(Animal):  # Dog inherits from Animal
    def __init__(self, name, breed):
        super().__init__(name)  # run the parent's constructor
        self.breed = breed
    def describe(self):  # override the parent's method
        return super().describe() + f" ({self.breed})"

print(Dog("Rex", "beagle").describe())  # Rex is an animal (beagle)
print(isinstance(Dog("Rex", "beagle"), Animal))  # True
```

## Sık sorulan sorular

**Kalıtım ile bileşim (composition) arasındaki fark nedir?**

Kalıtım, bir sınıfın ebeveyni genişletip kodunu yeniden kullandığı bir “-dir” ilişkisi kurar. Bileşim ise bir sınıfın başka nesneleri içerip işi onlara devrettiği bir “-sahiptir” ilişkisi kurar; bu genellikle daha esnek ve daha az sıkı bağlıdır.

**Çoklu kalıtım (multiple inheritance) nedir?**

Çoklu kalıtım, bir sınıfın birden fazla ebeveyn sınıfa sahip olması demektir. C++ ve Python bunu destekler; Java ve C# ise yalnızca tek bir ebeveyn sınıfa izin verir ama bir sınıfın birçok interface uygulamasına olanak tanır.

**Metot geçersiz kılma (method overriding) nedir?**

Geçersiz kılma, bir alt sınıfın ebeveynindeki bir metotla aynı ada ve parametrelere sahip bir metot tanımlayarak alt sınıf nesneleri için ebeveynin davranışını değiştirmesidir. Alt sınıf, özgün sürümü `super` aracılığıyla yine de çağırabilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
