C# Inheritance(Kalıtım,Miras)

Bu yazım da C#’ta inheritance(Kalıtım,Miras) kavramından bahsedeceğim.Inheritance,OOP(Object Oriented Programming – Nesne Yönelimli Programlama) tekniklerinden birisidir.Sınıflar arası hiyerarşik yapı kurabilmek, oluşturmak için kullanılır.Bir sınıf,başka bir sınıftan türeyerek(kalıtım alma) , o sınıfın public ve protected tanımlı yapılarını devralır.Kalıtım alan sınıfa : Derived Class , kalıtım veren sınıfa : Base class denir.Türeyen sınıf,türeten sınıf olarak isimlendirilir.
ACCESS MODIFIERS (ERİŞİM BELİRLEYİCİLERİ)
Protected
Eğer bir class içerisinde bir eleman,bir metod protected olarak tanımlanmışsa, o yapı o class için private ve o classtan türeyen classlar için public davranış sergiler.Yani protected elemanlar sadece o class ve o classtan türeyen classlar da kullanılabilirler.O classtan türemeyenler de kullanılmazlar.
Internal
Eğer bir class içindeki ifade internal ile işaretlenmişse sadece o assembly(o solution, o exe) içinde kullanılabilirler(Kalıtım alsın ya da almasın).Diğer yerlerde kullanılmaz.Mesela bir .dll projesi içindeki bir classta internal işaretli yapılar, o .dll in eklenip kullanıldığı başka solutionlar içindeki yapılarda kullanılamazlar.
Protected Internal
Başka bir assembly içinde, eğer bir class, bu assemblydeki bir classtan türemişse,o class içindeki protected internal ifadeler protected olmalarından dolayı kullanılabilirler, ama türemeyen classlar içinde bu elemanlar aynı zamanda internal oldukları için kullanılamazlar.
Public ve Private
Bu erişim belirliyicilerini zaten biliyoruz.Birdaha değinmek gerekirse;
Public erişim belirleyicisi ile oluşturulan metod ya da property ler oluşturulduğu class dısından da erişilebilir.
Private erişim belirleyici ile oluşturulan metod ya da property ler oluşturulduğu class dışında başka bir class ta kullanılamazlar.


C# da oluşturulan her class aslında Object classından türemiştir.Yani her class object classından otomatik türetilir.Bir sınıf yazıp,oluşturduğumuz sınıftan nesne yaratırsak eğer,o nesnenin içinde otomatikman Equals(),GetHashCode(),GetType() ve ToString() metodlarını görürüz.Halbuki biz bu metodları sınıfımıza yazmamıştık.Bu metodlar Object sınıfından kalıtım yoluyla gelirler.Her nesneden ulaşılabilen bu metodlar aslında object sınıfının metodlarıdır.

Bir sınıf sadece tek bir sınıftan kalıtım alabilir.Aynı anda birden fazla sınıftan kalıtım alamaz.Fakat ileride göreceğimiz interface yapıları kullanılarak bu sıkıntı aşılacaktır.

Türeten sınıf(base class) , türeyen sınıf(derived class) için base olarak kabul edilir.Yani her sınıfın base si,kendi türediği sınıftır.Hiyerarşinin en tepesindeki sınıf her sınıfın base i değildir.Yani;
A->B B->C(A dan B türesin,B den de C türesin).Burada C nin basesi B sınıfıdır.A sınıfı C nin basesi değildir.Her sınıfın basesi türediği sınıfıdır.
Şimdi bu sayfada kalıtımla ilgili teorik olarak bilgiler verdim.İkinci sayfada mantığıyla ilgili konuşalım.

Bunlar da hoşunuza gidebilir...

12 Cevaplar

  1. Ahmet dedi ki:

    Harika bir anlatımın var..Çok işime yaradı,çok teşekkür ederim.

  2. Gencay dedi ki:

    Asıl ben teşekkür ederim…Faydasını gördüyseniz ne mutlu bana 🙂

  3. ensar bağış dedi ki:

    Videonu izledim youtubedan ve buraya geldim. Çok güzel bir anlatımın var. Hep başarılı ol inşaallah böyle:)

    • Gençay dedi ki:

      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…

  4. Tuna dedi ki:

    Abi harikasın.Çok iyi anlatmışsın.Ellerine sağlık teşekkürler.

  5. emrecan dedi ki:

    cok güzell anlatım cok başarılı biligilerden dolayı tsekrler..

  6. şule dedi ki:

    Şaka yoluyla cinsiyetçilik yapmanıza kızdım.

    • Gençay dedi ki:

      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…

  1. 19 Mart 2018

    […] erişim belirleyicileri hakkında C# Inheritance(Kalıtım,Miras) başlıklı yazımızda detaylı bir değerlendirmede bulunmuştuk. Bu erişim belirleyicilerinin […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.