Inheritance (Kalıtım): Base Class ve virtual, override Mantığı

crazy_coder

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

C# Kalıtım (Inheritance) Rehberi: Base Class, virtual ve override Kavramları​


Gerçek hayatta nasıl ki bir çocuk ebeveynlerinden belirli özellikleri (göz rengi, boy vb.) miras alıyorsa, C#'ta da sınıflar birbirlerinden özellik alabilirler. Bu, kod tekrarını önler ve projelerimizin hiyerarşik bir düzende büyümesini sağlar.



1. Base Class (Temel Sınıf) ve Derived Class (Türetilmiş Sınıf)​


Kalıtımda iki ana aktör vardır:

  • []Base Class (Parent): Özelliklerini devreden üst sınıf.
    []Derived Class (Child): Üst sınıftan özellikleri alan alt sınıf.

C#'ta kalıtım : operatörü ile sağlanır.

C#:
// Base Class (Temel Sınıf)
public class Memeli
{
public string Ad { get; set; }
public void Beslen() => Console.WriteLine($"{Ad} besleniyor...");
}

// Derived Class (Türetilmiş Sınıf)
public class Kedi : Memeli
{
public void Miyavla() => Console.WriteLine("Miyav!");
}

Yukarıdaki örnekte Kedi sınıfı, Memeli sınıfından Ad özelliğini ve Beslen() metodunu otomatik olarak devralır.



2. Metot Ezme (Method Overriding): virtual ve override​


Bazen temel sınıftan gelen bir metodun, alt sınıfta farklı şekilde çalışmasını isteyebiliriz. Örneğin, her hayvan ses çıkarır ama her birinin sesi farklıdır.

virtual Anahtar Kelimesi​

Eğer temel sınıftaki bir metodun alt sınıflar tarafından değiştirilmesine (ezilmesine) izin vermek istiyorsanız, o metodu virtual olarak tanımlamalısınız.

override Anahtar Kelimesi​

Alt sınıfta, temel sınıftan gelen virtual bir metodu yeniden yazmak istediğinizde override kelimesini kullanırsınız.

C#:
public class Hayvan
{
public virtual void SesCikar()
{
Console.WriteLine("Hayvan bilinmeyen bir ses çıkardı.");
}
}

public class Kopek : Hayvan
{
public override void SesCikar()
{
Console.WriteLine("Hav hav!");
}
}



3. base Anahtar Kelimesi​


Alt sınıftayken, temel sınıftaki bir metoda veya yapıcı metoda (constructor) erişmek isterseniz base anahtar kelimesini kullanırsınız.

C#:
public class Personel
{
public Personel(string isim) => Console.WriteLine($"Personel: {isim}");
}

public class Mudur : Personel
{
public Mudur(string isim) : base(isim) // Üst sınıfın constructor'ını çağırır
{
Console.WriteLine("Müdür nesnesi oluşturuldu.");
}
}



4. Sealed Sınıflar: Kalıtımı Durdurmak​


Eğer bir sınıfın asla miras bırakmamasını (yani başka bir sınıfın ondan türememesini) istiyorsanız, o sınıfı sealed olarak tanımlarsınız. Bu, güvenlik ve tasarım bütünlüğü için önemlidir.

C#:
public sealed class GuvenlikSistemi
{
// Bu sınıftan kimse miras alamaz!
}



Özet: Kalıtımın Avantajları​


AvantajAçıklama
Kod TekrarıOrtak kodları tek bir yerde (Base Class) toplayarak yazım yükünü azaltır.
Bakım KolaylığıTemel sınıfta yapılan bir değişiklik tüm alt sınıflara anında yansır.
GenişletilebilirlikMevcut kodu bozmadan yeni özellikler eklemeyi kolaylaştırır.



Sonuç​


Kalıtım, sınıflar arası ilişkiyi organize ederken projelerimize bir "soy ağacı" kazandırır. virtual ve override mekanizması ise bu ağacın dallarının kendine has meyveler vermesini sağlar. Ancak unutmayın; C#'ta bir sınıf sadece bir adet sınıftan miras alabilir (Single Inheritance).
 
Geri
Üst