C# Inheritance(Miras) Nedir?

Doğuhan Aydeniz tarafından yayınlanmıştır 15. Ekim 2009 11:37

Inheritance, bir babanın oğluna bıraktığı bir gayrimenkul gibidir veya babanın DNA'sından oğluna geçen karakteristik özellik gibidir.

Hemen bir örnek yaparak inheritance neymiş bakalım.

Marka, Model ve Araba adlı 3 tane class(sınıf) yapacağız.

Araba sınıfı Model sınıfından, Model sınıfı da Marka sınıfından inherit olacak.


MARKA SINIFI :

Marka sınıfımızı yazalım, Marka'nın 2 tane özelliği olacak "MarkaAdi" ve "Tarihce" şeklinde.

public class Marka

{

private string _MarkaAdi;
public string MarkaAdi

{

get { return _MarkaAdi; }

set { _MarkaAdi = value; }

}

private string _Tarihce;
public string Tarihce

{

get { return _Tarihce; }

set { _Tarihce = value; }

}

 

 

public Marka()

{

//

// TODO: Add constructor logic here

//

}

}

 


MODEL SINIFI :

Şimdi de Model sınıfımızı yazalım. Buna da ModelAdi, EnYuksekHiz, DortKapiMi, CabrioMu ve Fiyat adında 5 tane property tanımlayalım ve en önemli dikkat etmeniz gereken nokta sınıfımızın adının yanına ": Marka" diyerek Model sınıfını Marka sınıfından türetmemiz olmalıdır. Bunu dediğimiz takdirde Model sınıfının baba sınıfı Marka olacak ve onun özelliklerini de kullanabilecek.


public class Model : Marka

{

private string _ModelAdi;
public string ModelAdi

{

get { return _ModelAdi; }

set { _ModelAdi = value; }

}

private int _EnYuksekHiz;public int EnYuksekHiz

{

get { return _EnYuksekHiz; }

set { _EnYuksekHiz = value; }

}

private bool _DortKapMi;
public bool DortKapiMi

{

get { return _DortKapMi; }

set { _DortKapMi = value; }

}

private bool _CabrioMu;
public bool CabrioMu

{

get { return _CabrioMu; }

set { _CabrioMu = value; }

}

private string _Fiyat;
public string Fiyat

{

get { return _Fiyat; }

set { _Fiyat = value; }

}

 

public Model()

{

//
// TODO: Add constructor logic here
//

}

}




ARABA SINIFI :
Araba sınıfımızı yapalım ve Model sınıfından türetelim. Bu sınıfa bir arabanın herkese göre değişebilen özelliklerini tanımlıyorum. Mesela Şase Numarası her arabada farklıdır veya her arabanın sahibi farklı olması gibi. Bu sınıfta ki Property(Özellik)'lerimiz : SahipAdSoyad, ModifiyeliMi, SaseNo'dur. 


public class Araba : Model

{

private string _SahipAdSoyad;
public string SahipAdSoyad

{

get { return _SahipAdSoyad; }

set { _SahipAdSoyad = value; }

}

private bool _ModifiyeliMi;
public bool ModifiyeliMi

{

get { return _ModifiyeliMi; }

set { _ModifiyeliMi = value; }

}

private string _SaseNo;
public string SaseNo

{

get { return _SaseNo; }

set { _SaseNo = value; }

}

 

public Araba()

{

//

// TODO: Add constructor logic here

//

}

}

 

Şimdi ise olacaklara bakalım ve birbirinden inherit olmuş sınıflarımızı kullanmaya başlayalım. Ben bir web projesi yapıyorum ve herhangi bir sayfanın Page_Load event'ına aşağıdaki şekilde tanımlamalar yapıp sınıflarımı kullanıyorum.

Evet aşağıdaki kodlarda dikkatinizi toplamanız yer "Araba" sınıfını Car diye bir değişkene çağırdık. Artık Car, Model sınıfından ve Model sınıfıda Marka sınıfından inherit olmuş bir class'dır. Yani şöyle betimleyelim;

Bu durumda Araba torun oldu, Model baba oldu, Marka ise Dede oldu. Dededen gelen özellikler nelerdir toruna MarkaAdi ve Tarihce property'leri. Baba'dan gelen özelliklerde ModelAdi, CabrioMu, EnYuksekHiz, Fiyat ve DortKapiMi propertyleridir. Araba, torun inherit olduğu için ailesinden gelen tüm özelliklere sahiptir artık. Aslında sadece property değil method'larda miras olarak kalabilirdi ama biz method yazmadık. Mesela dedenin "OsmanlıTokadiAt" diye bir metodu olsaydı, torun da dedesinin bu metodunu kullanarak önüne gelene tokat atabilecekti. Tabii biz şiddetten yana değiliz. :)

protected void Page_Load(object sender, EventArgs e)

{

//Araba sınıfını Car diye bir değişkene bağladık.

Araba Car = new Araba();

//Marka sınıfına ait özellikler

Car.MarkaAdi = "Hyundai";
Car.Tarihce = "Hyundai hakkında tarihçe yazısı gelecek...";

//Marka sınıfına ait özellikler

Car.ModelAdi = "Getz";
Car.CabrioMu = false;
Car.DortKapiMi =
true;
Car.EnYuksekHiz = 220;
Car.Fiyat =
"13750";

//Araba sınıfına ait özellikler

Car.SahipAdSoyad = "Doğuhan AYDENIZ";
Car.ModifiyeliMi = false;
Car.SaseNo =
"F1GHA934FJ330IMDF23";

}




Aşağıda Araba sınıfını tanımladıktan sonra Car değişkenimizin sonuna nokta koyduğumuzda ki görüntüsüdür.



3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

C#



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.