Inheritance (kalıtım), dilin var olan sınıf tanımlamalarının üzerine yeni bir sınıf tanımlaması inşa edilmesine izin verme yeteneği olarak ifade edilebilir. Inheritance (kalıtım), bir türetilen sınıfın özellik ve davranışlarını, bir alt sınıfın miras alarak sanki kendi üyeleriymiş gibi kullanmasıdır. Kalıtım fikrinin altında yatan en basit fikir, yeni bir sınıfın başka sınıfların fonksiyonelliklerine sahip olması ve genişletilmesidir.
Inheritance (kalıtım), konusunu şöyle bir örnekle ele alalım; Çalışan adında bir sınıf oluşturalım. Bu sınıfı temel sınıf olarak (base class) kullanabiliriz. Çünkü bir şirkette hangi pozisyonlar olursa olsun çalışanları ortak değerleri muhakkak olmaktadır. Adı, Maaşı, Numarası gibi. Daha sonrada bu çalışan sınıfından yönetici ve personel için sınıflar türetelim. Bütün çalışanlar için ortak olacak üyelerimiz çalışan numarası, çalışan adı ve çalışan maaşı olsun. Müdür, bu 3 üyeyi kalıtım yoluyla sahip olsun ayrıca departmanın yaptığı kar miktarı bilgisini de kendi bünyesinde barındırsın. Personel ise yine aynı şekilde 3 üyeyi çalışan sınıfından kalıtım yoluyla elde etsin ve yine benzer şekilde yaptığı satış miktarını kendi bünyesinde gerçekleştirsin.
Inheritance (Kalıtım) iki nokta üst üste (:) işareti ile gerçekleştirilir. Aşağıda ki örnekte olduğu gibi,
“class Yonetici : Calisan” Yönetici sınıfının Çalışan sınıfına kalıtım yapıldığı belirtilir. Böylece Yönetici sınıfı, Çalışan sınıfının tüm özelliklerinden faydalanabilir.
class Calisan
{
private int _calisanNo;
private string _calisanAd;
private double _calisanMaas;
public int CalisanNo
{
get { return _calisanNo; }
set { _calisanNo = value; }
}
public string CalisanAd
{
get { return _calisanAd; }
set { _calisanAd = value; }
}
public double CalisanMaas
{
get { return _calisanMaas; }
set { _calisanMaas = value; }
}
}
//Yönetici Sınıfımız, Çalışan sınıfına kalıtım yapıldığı belirtiliyor(:)
class Yonetici: Calisan
{
private double _departmanKar;
public double DepartmanKar
{
get { return _departmanKar; }
set { _departmanKar = value; }
}
}
//Personel Sınıfımız, Çalışan sınıfına kalıtım yapıldığı belirtiliyor(:)
class Personel: Calisan
{
private int _satisSayisi;
public int SatisSayisi
{
get { return _satisSayisi; }
set { _satisSayisi = value; }
}
}
class Program
{
static void Main(string[] args)
{
//Yeni bir Yonetici elemanı oluşturuyoruz.
Yonetici yonetici = new Yonetici();
//Inheritance ile Calısan sınıfından aldığımız üyeler.
yonetici.CalisanNo = 1;
yonetici.CalisanAd = "Fatih Alkan";
yonetici.CalisanMaas = 8500.78;
//Yöneyici sınıfında tanımlanan üyeler.
yonetici.DepartmanKar = 175000;
//Yeni bir Personel elamanı oluşturuyoruz ve üyelerini çağrıyoruz.
Personel personel = new Personel();
personel.CalisanNo = 2;
personel.CalisanAd = "Beyazıt Alkan";
personel.CalisanMaas = 4500.32;
personel.SatisSayisi = 153;
Console.WriteLine("Yönetici No: {0} Adı: {1} Maaşı: {2}, Departman Karı: {3}", yonetici.CalisanNo.ToString(), yonetici.CalisanAd.ToString(), yonetici.CalisanMaas.ToString(), yonetici.DepartmanKar.ToString());
Console.WriteLine("Personel No: {0} Adı: {1} Maaşı: {2}, Satış Sayısı: {3}", personel.CalisanNo.ToString(), personel.CalisanAd.ToString(), personel.CalisanMaas.ToString(), personel.SatisSayisi.ToString());
Console.Read();
}
}
Teşekkür ederim çok açıklayıcı olmuş emeğizine sağlık.