Inheritance (Kalıtım): Sınıflar Arası Miras ve Kod Yeniden Kullanımı

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Inheritance: Kodun Soy ağacı ve Yeniden Kullanım​


Kalıtım, sınıflar arasında bir "is-a" (bir ...dır) ilişkisi kurar. Örneğin; "Kedi bir hayvandır" veya "Yazılımcı bir çalışandır". Bu yapıda, genel özellikler üst sınıfta toplanır, alt sınıflar ise bu özellikleri devralır.



1. Temel Kavramlar: Base ve Derived Class​


Kalıtımda iki ana taraf vardır:

Base Class (Taban Sınıf): Özellikleri devreden, genel sınıf (Örn: Araba).

Derived Class (Türetilmiş Sınıf): Özellikleri devralan, daha spesifik sınıf (Örn: ElektrikliAraba).

C++:
// Base Class
class Arac {
public:
string marka = "Genel Arac";
void kornaCal() {
cout << "Dut duuut!" << endl;
}
};

// Derived Class
class Otomobil : public Arac {
public:
int kapiSayisi = 4;
};



2. Erişim Belirleyiciler ve Miras Türleri​


Kalıtım yaparken public, protected veya private kelimelerini kullanmak, miras alınan üyelerin alt sınıfta nasıl görüneceğini belirler:

Public Inheritance: En yaygın türdür. Üstteki public, altta da public kalır.

Protected Üyeler: Kalıtımda kilit rol oynar. Sınıf dışından erişilemezler ama alt sınıflar tarafından sanki kendi değişkenleriymiş gibi kullanılabilirler.

Üst Sınıf ÜyesiPublic MirasProtected MirasPrivate Miras
PublicPublicProtectedPrivate
ProtectedProtectedProtectedPrivate
PrivateErişilemezErişilemezErişilemez



3. Çoklu Kalıtım (Multiple Inheritance)​


C++, bir sınıfın birden fazla sınıftan miras almasına izin verir. Bu özellik güçlüdür ancak dikkatli kullanılmazsa karmaşıklığa yol açabilir.

C++:
class Sivi { };
class Yakit { };

// Hem Sivi hem de Yakit özelliklerini taşır
class Benzin : public Sivi, public Yakit { };



4. Neden Kalıtım Kullanmalıyız?​



  • []Kod Tekrarını Önler: 10 farklı araç tipi için 10 kez "marka" değişkeni tanımlamak yerine bir kez Arac sınıfında tanımlarsınız.
    []Hata Ayıklama Kolaylığı: Genel bir özelliği değiştirmek istediğinizde sadece üst sınıfta güncelleme yapmanız yeterlidir.
  • Hiyerarşik Düzen: Projenizi mantıklı ve hiyerarşik bir yapıda organize etmenizi sağlar.



Sonuç​


Kalıtım, büyük ölçekli yazılımların iskeletini oluşturur. Ancak her şeyi birbirine bağlamak yerine, sınıflar arasında gerçekten bir "soy" ilişkisi olduğundan emin olmalısınız. Eğer sadece bir fonksiyonu kullanmak istiyorsanız, kalıtım yerine o sınıfın bir nesnesini kendi sınıfınızın içinde barındırmak (Composition) bazen daha iyi bir tercih olabilir.
 
Geri
Üst