C# Inheritance(Kalıtım,Miras)
Şimdi bir şirketin hiyerarşisini oluşturalım.
Şirketin personellerini,satış danışmanlarını ve şirketin iş yaptığı müşterileri kalıtım yoluyla hiyerarşik bir şekilde yazalım.
Şimdi düşünelim,personellerin,müşterilerin ve satış danışmanlarının ortak özellikleri nelerdir.Hepsi bir insan olduğu için adı,soyadı,yasi vs.. gibi özellikleri ortak.O halde bunları kalıtımla alacakları bir sınıf oluşturalım.Ben bu sınıfa İnsan.cs ismini veriyorum.Şimdi bu sınıfı oluşturalım.
---İnsan.cs---
class Insan
{
public string Adi { get; set; }
public string SoyAdi { get; set; }
public string Yasi { get; set; }
public string Cinsiyet { get; set; }
}
Yukarıda aklıma geldiği kadar ortak özellikleri yazdım.Şimdi personelin sınıfını oluşturalım.Personeller.cs isimli class dosyasın da hazırlıyorum.
---Personeller.cs---
class Personeller:Insan
{
public string PersonelMaasi { get; set; }
public string PersonelUnvani { get; set; }
public string PersonelCalismaSuresi { get; set; }
}
Şimdi Personeller.cs sınıfın da yazdıklarımız personellere has özelliklerdir.Yani her insanın maaşı,ünvanı ve calisma süresi olmaz.Bu yüzden dolayı bu özellikler Personeller.cs sınıfın da yazılmıştır.Insan.cs sınıfından diğer özellikleri kalıtım yoluyla alacağız.Bunuda sınıf isminin yanında “:” operatörü ile Base classımızın ismini yazarak gerçekleştiriyoruz.”class Personeller:Insan”, bu ifade sayesinde Insan.cs sınıfındaki özellikleri Personeller.cs sınıfına kalıtımla almış olduk.
Şimdi ise satış danışmanlarının sınıfını hazırlayalım.SatisDanismani.cs sınıfında hazırlıyorum.
---SatisDanismani.cs---
class SatisDanismani:Personeller
{
public string SatisSayisi { get; set; }
}
Şimdi dikkat ederseniz,SatisDanismani.cs sınıfının Base Classı Personeller.cs sınıfıdır.Bunun sebebi,satış danışmanları şirketimizin zaten bir personelidir.Ve personellerin has özellikleri satış danışmanında da olması gerekiyor.Bunuda Personeller.cs den kalıtımla alıyor.Şimdi soracaksınız.Peki satış danışmanının adı,soyadı vs.. gibi bilgileri yok mu? diye.Evet var.Personeller.cs sınıfı kalıtım yoluyla Insan.cs sınıfından o özellikleri aldığı için,otomatikman SatisDanismani.cs sınıfına da yansıyacaklardır.Hiyerarşiyi bu şekilde rahatça düzenleyebiliyoruz.Tabi her personellin yaptığı iş satış danışmanlığı olmadığı için, her personelin satış sayısı olmayacaktır.O yüzden kendine has özelliğini SatisDanismani.cs sınıfında yazdım.Diğer geri kalan özellikleri kalıtım yoluyla almış olacak zaten.
Şimdi de müşteriler sınıfını oluşturalım.Müşteriler bizim şirketimizin personeli olmadığına dikkatinizi çekerim.Bu sınıfı Musteriler.cs sınıfında oluşturuyorum.
---Musteriler.cs---
class Musteriler:Insan
{
public string MusteriSirketi { get; set; }
}
Müşteri de bir insan olduğundan olağan özellikleri Insan.cs sınıfından alıyor.Kendine has özelliği olan şirketini kendi sınıfına yazıyoruz.Bütün insanların şirketi yoktur.
Şimdi bu classların kullanımını görelim.
Hiyerarşi yukarıda anlattığım gibidir.Genel mantık budur.Bu sistemi siz daha iyi geliştirebilirsiniz. Buraya kadar giriş niteliğinde bir tanıtım yaptık.Sonraki sayfada mevzuya birazdaha derinden girelim.Kalıtımın sistematik mantığını inceleyelim.





Harika bir anlatımın var..Çok işime yaradı,çok teşekkür ederim.
Asıl ben teşekkür ederim…Faydasını gördüyseniz ne mutlu bana 🙂
Videonu izledim youtubedan ve buraya geldim. Çok güzel bir anlatımın var. Hep başarılı ol inşaallah böyle:)
Merhaba Ensar,
Güzel yorumun ve iltifatın için teşekkür ederim.
Allah hepimizde başarıyı nasip etsin…
Güzel insansın, beni çok mutlu ettin…Allah’ta seni mutlu etsin…
Eline emeğine aklına sağlık tüm yazılarını kronolojik olarak okumaya çalışıyorum okudukça okuyasım geliyor sakın kapatma bu siteyi 🙂
Bol bol faydalanmanız dileğiyle…
Sevgiler.
Abi harikasın.Çok iyi anlatmışsın.Ellerine sağlık teşekkürler.
Merhaba Tuna,
Bende sana güzel geri dönüşün için teşekkür ederim…
cok güzell anlatım cok başarılı biligilerden dolayı tsekrler..
Faydalandıysanız ne mutlu… 🙂
COK HARİKAA
Şaka yoluyla cinsiyetçilik yapmanıza kızdım.
Bu kadar duyar kasarsanız muhabbetleri nesneler dünyasına sınırlandırırsınız.
Cinsiyetçilik maksatlı bir içerik oluşturmadığımı sizlerde biliyorsunuz.
Sevgiler…
Hocam hiç açıklayıcı olmamış.Ayrıca da cinsiyetçilik yapmışsınız hiç yakıştıramadım. Kendinize iyi mi baksanız bilemedim. Uhuf diyorum yalnızca. Muhabbetlerinizin nesneler dünyasında sınırlı kalmaması dileğiyle.
Hadi ordan 🙂 Böyle öğrenci mi olur yhau?
Kesinlikle ideal öğrenciyim itiraf edebilirsiniz . Güldünüz yakaladım 😀 Plak var hocam mouse isterseniz eğer 😀 güzel yarınlar güzel insanlar sizlere selam olsun. Hadi Allaha emanet…
Kesinlikle ideal öğrenciysen vay halimize 🙂 Sanada selam olsun. Allahaısmarladık…
Merhaba hocam, kucuk bir sorum olacak entityleri olustururken bir classtan baska bir class’a miras verirsek base class’ in propertylerini bir alt class’ta kullanabilirmiyiz?
Merhaba,
Kalıtımsal olarak aktarılacağı için kullanabilirsin.
Merhaba elinize sağlık. Benim de bir sorum olacak. Base classta 100bin kayıttan oluşan bir object List oluşrutmak istiyorum Ve classtan türeyen classların bu listeye ulaşmasını istiyorum. Ancak anladığım kadarıyla türeyen her class için bu liste kopyalanacak bunu nasıl engelleyebiliriz. Teşekkürler
Merhaba,
Öyle bir durumda ilgili listeyi farklı bir static class‘ta tutabilir ve ilgili sınıflarda çağırabilirsin.
İyi çalışmalar.