C# OOP - Inheritance(Kalıtım) - 2

C# OOP – Inheritance(Kalıtım) – 2

C# dilinde kalıtım/miras alma özelliğinin kullanımına devam ediyoruz…

    public class BaseClass     {         public int id { get; set; }         public string referansKod { get; set; }         public string tcKimlikNo { get; set; }         public string isim { get; set; }         public string soyisim { get; set; }         public int cinsiyet { get; set; }         public DateTime kayitTarih { get; set; }         public int kayitKullanici { get; set; }         public int guncellemeKullanici { get; set; }         public bool silindi { get; set; }     }
    public class Personel:BaseClass     {         public DateTime IsBaslangicTarihi { get; set; }         public DateTime IsBitisTarihi { get; set; }         public int IzinSayisi { get; set; }     }
    public class Egitmen:BaseClass     {         public string Brans { get; set; }         public int Seviye { get; set; }     }
    public class Ogrenci:BaseClass     {         public string bolum { get; set; }         public int seviye { get; set; }     }

En başta temel sınıfımız var Ogrenci, Egitmen,Personel sınıfları temel yani BaseClass’tan miras alıyorlar. Bunları da Program.cs üzerinden düzenleyelim:

    class Program     {         static void Main(string[] args)         {             Egitmen egitmen1 = new Egitmen();             egitmen1.id = 5;//kalıtım             egitmen1.isim = "Tutku";//kalıtım             egitmen1.soyisim = "ÇAKIR";//kalıtım             egitmen1.Brans = "Yazılım Mühendisliği";              Personel personel1 =new Personel();             personel1.isim = "Burhan"; //kalıtım             personel1.soyisim = "ÇAKIR"; //kalıtım             personel1.IsBaslangicTarihi = DateTime.Now;              Ogrenci ogrenci1 = new Ogrenci();             ogrenci1.seviye = 1;             ogrenci1.bolum = "Mekatronik";             ogrenci1.id = 1; //kalıtım             ogrenci1.isim = "Ahmet";//kalıtım             ogrenci1.soyisim = "YILMAZ";//kalıtım          }     }

Not: Yapıcı metodlara WriteLine komutunu girdiğimizde ilk olarak konsolda BaseClass’ın metninin ardından Program.cs de örneklenen mirasçı classın metninin ekranda görülmüştür.

Yani ilk olarak miras bırakan yani baba/ana sınıfın yapıcı metodu çalışır ardından örneklenen mirasçi sınıfın yapıcı metodu çalışır. Ardından başka örneklenen mirasçı sınıflar varsa onlarda da sıralama aynı şekilde devam eder.

    public class BaseClass     {         public int id { get; set; }         public string referansKod { get; set; }         public string tcKimlikNo { get; set; }         public string isim { get; set; }         public string soyisim { get; set; }         public int cinsiyet { get; set; }         public DateTime kayitTarih { get; set; }         public int kayitKullanici { get; set; }         public int guncellemeKullanici { get; set; }         public bool silindi { get; set; }          public BaseClass()         {             IDAta();         }          private void IDAta()         {             Random rnd = new Random();             this.id=rnd.Next(1000,9000);         }          public void OrnekMetot()         {             //Test         }       }
    public class Egitmen:BaseClass     {         public string Brans { get; set; }         public int Seviye { get; set; }          public Egitmen()         {             Console.WriteLine("Eğitmen nesnemizin yapıcı metodu çalıştı");         }     }
    class Program     {         static void Main(string[] args)         {             Egitmen egitmen1 = new Egitmen();              System.Threading.Thread.Sleep(1000);//aynı ID'yi atama işlemi olabilir bu sebeple 1 saniye bekleme yaptırdık              Personel personel1 =new Personel();              System.Threading.Thread.Sleep(1000);//aynı ID'yi atama işlemi olabilir bu sebeple 1 saniye bekleme yaptırdık               Ogrenci ogrenci1 = new Ogrenci();               ogrenci1.OrnekMetot();              Console.ReadLine();          }     }

Örneklenen alt sınıf üzerinden public veya protected erişim belirleyicili temel sınıftaki metoda erişilebilir.

Boxing ve unboxing örneği

            object o1 = ogrenci1; //boxing             ogrenci1 = (Ogrenci)o1; //unboxing
    class Program     {         static void Main(string[] args)         {             Egitmen egitmen1 = new Egitmen();              System.Threading.Thread.Sleep(1000);//aynı ID'yi atama işlemi olabilir bu sebeple 1 saniye bekleme yaptırdık              Personel personel1 =new Personel();              System.Threading.Thread.Sleep(1000);//aynı ID'yi atama işlemi olabilir bu sebeple 1 saniye bekleme yaptırdık               Ogrenci ogrenci1 = new Ogrenci();               ogrenci1.OrnekMetot();              BaseClass tip1;             tip1 = egitmen1; //Eğitmen nesnesini ebeveyn nesnesine atadık             egitmen1 = (Egitmen)tip1; //unboxing              tip1 = personel1; // Personel nesnesini ebeveyn class nesnesine atadık             personel1 = (Personel)tip1; //unboxing              tip1 = ogrenci1; // Öğrenci nesnesini ebeveyn class nesnesine atadık                                 ogrenci1 = (Ogrenci)tip1; //unboxing                Console.ReadLine();          }     }

Yukarıdaki örneklerde Program.cs içindeki main metodu içinde child classların örneklenmesi ile base class nesnelerine erişmiştik. Child class içinden bu baseclass fieldlarına erişmek için metod kullanmamız lazım mesela yapıcı metod içinden this.id yazarak id fieldına erişebiliriz. veya farklı metotlar yazıp bu baseclasstaki elemanlara değer verebiliriz. Her şeyi program.cs içindeki main metodu içinde yapmak zorunda değiliz.

Kalıtılmasını istemediğimiz classın başına sealed kodu girmeliyiz.

sealed public class Egitmen:BaseClass     {         public string Brans { get; set; }         public int Seviye { get; set; }                   public Egitmen()         {             Console.WriteLine("Eğitmen nesnemizin yapıcı metodu çalıştı");         }     }

Temel Anlatım Kısmı: http://kodlasana.com/programlama/c-sharp/c-oop-inheritancekalitim-temel-anlatim.html

Kalıtımda protected erişim belirleyicili field ve metodlara mirasçı erişebilir.


Yayımlandı

kategorisi

yazarı:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir