C# da Kalıtım (Inheritance)
C#'ta kalıtım (inheritance), nesne yönelimli programlamanın temel kavramlarından biridir. Bu kavram sayesinde, mevcut bir sınıfın (base class veya parent class) özelliklerini ve davranışlarını yeni bir sınıfa (derived class veya child class) aktarabiliriz. Bu sayede kod tekrarını azaltır, daha modüler ve genişletilebilir uygulamalar geliştiririz.
Temel Kavramlar
* Base Class: Özellikleri ve davranışları miras bırakılan sınıf.
* Derived Class: Base class'tan özellik ve davranışları devralan sınıf.
Nasıl Çalışır?
* Kalıtım Bildirimi:
class DerivedClass : BaseClass
{
// ...
}
Bu kodda DerivedClass sınıfı, BaseClass sınıfından türetilmiştir.
* Üye Mirası:
Derived class, base class'ın tüm erişilebilir üyelerini (alanlar, metotlar) otomatik olarak miras alır.
* Metot Geçersiz Kılma (Overriding):
Derived class, base class'ın sanal (virtual) veya soyut (abstract) bir metodunu geçersiz kılarak kendi özel uygulamasını sunabilir.
class BaseClass
{
public virtual void MyMethod()
{
// Base class uygulaması
}
}
class DerivedClass : BaseClass
{
public override void MyMethod()
{
// Derived class uygulaması
}
}
* Çok Biçimlilik (Polymorphism):
Kalıtım sayesinde, farklı türden nesneler ortak bir base class üzerinden referans alınabilir ve aynı şekilde işlenebilir.
Kalıtımın Faydaları
* Kod Tekrarını Azaltma: Ortak özellikleri tek bir yerde tanımlayarak tekrarı önler.
* Modülerlik: Sistemi daha küçük, yönetilebilir parçalara ayırır.
* Genişletilebilirlik: Mevcut sınıfları değiştirmeden yeni özellikler ekleme imkanı sunar.
* Çok Biçimlilik: Kodun daha esnek ve dinamik olmasını sağlar.
Önemli Noktalar
* Tekli Kalıtım: C# tekli kalıtımı destekler, yani bir sınıf sadece bir base class'tan türetilebilir.
* Arayüz Kalıtımı: Bir sınıf birden fazla arayüz implemente edebilir.
* Erişim Belirleyicileri: Base class'taki üyelerin erişim belirleyicileri, miras alındıklarında da geçerlidir.
* Yapıcı Metot Zinciri: Derived class'ın yapıcı metodu, base class'ın yapıcı metodunu çağırmak zorundadır.
Örnek: Hayvanlar Hiyerarşisi
class Hayvan
{
public string Ad { get; set; }
public virtual void SesCikar()
{
Console.WriteLine("Genel hayvan sesi");
}
}
class Kopek : Hayvan
{
public override void SesCikar()
{
Console.WriteLine("Hav!");
}
}
class Kedi : Hayvan
{
public override void SesCikar()
{
Console.WriteLine("Miyav!");
}
}
Bu örnekte Kopek ve Kedi sınıfları Hayvan sınıfından türetilmiştir ve SesCikar metodunu geçersiz kılarak kendi seslerini çıkarırlar.
Kalıtım, C# ile nesne yönelimli programlama yaparken sıkça kullanılan ve güçlü bir araçtır. Bu konuyu daha derinlemesine incelemek için virtual, abstract, override, interface gibi anahtar kelimeleri ve polymorphism kavramını araştırmanızı öneririm.
Belirli bir konuda daha fazla bilgi almak ister misiniz? Örneğin, abstract class'lar, interface'ler veya polymorphism hakkında daha detaylı bir açıklama isteyebilirsiniz.
Hiç yorum yok:
Yorum Gönder