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 Üyesi | Public Miras | Protected Miras | Private Miras |
|---|---|---|---|
| Public | Public | Protected | Private |
| Protected | Protected | Protected | Private |
| Private | Erişilemez | Erişilemez | Eriş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.