C# da Override Methodlar

By Burak TUNGUT - 21.11.2012 - Kategori C#

Bu makalem de C# ile iki sınıf üretip ikisinin de aynı isimde bulunan methodun farklı sonuçlar vermesini yani diğer methodu ezmesini sağlayacağız.
Override methodlar diğer bir değişle method ezme yöntemiyle base sınıfın methodunu etkisil hale getirerek kendi sınıfındaki methodu nasıl çalıştıracağımızı göreceğiz.

 Override methodlar nesne yönelim mimarisinin olmazsa olmazlarından biridir ve haliyle virtual methodlarda tabi ki. Method ezmeye yarayan override yapısı sayesinde miras aldığımız yani base sınıfımız olan bir sınıftaki methodun eksikliğini giderebiliriz.

Override konusunu iyi bir şekilde kavramak için iki sınıf düşünelim. 1. Sınıfımız insan sınıfı olacak ve adi ve soyadi üye değişkenlerine sahip olacak.Aynı zamanda bu sınıfımızda bilgileriYazdir gibi bir methodumuz olacak ve bu method o kişinin bilgilerini konsola yazacak.

2.Sınıfımız ise ogrenci sinifi olup kisi sinifindan miras alacaktır. Farklı olarak ogrencino üye değişkenine sahip olan bu sınıfımız için ise override bir method yazacağız. Ama öncelikle yazmamamız durumunda ne ile karşılaşacağımızı bir incelemek istiyorum. Şimdi sınıflarımızı görelim,

 

class insan
        {
            private string adi;
            private string soyadi;

            public string Soyadi
            {
                get { return soyadi; }
                set { soyadi = value; }
            }

            public string Adi
            {
                get { return adi; }
                set { adi = value; }
            }

            public virtual void bilgileriYazdir()
            {
                Console.WriteLine("Kişi bilgileri : "+this.adi+" "+this.soyadi);
            }
        }

Şimdi ise insan sınıfında miras alacak olan ogrenci sınıfımızı inceleyelim,

class ogrenci : insan
        {
            private int ogrencino;
            public int ogrenciNo
            {
                get { return ogrencino; }
                set { ogrencino = value; }
            }

            public override void bilgileriYazdir()
            {
                Console.WriteLine("Öğrenci bilgileri : " + base.Adi + " " + base.Soyadi + ", " + this.ogrencino);
            }

        }

 

Main methodumuz da bir insan ve ogrenci türetelim ve ekrana yazdırma işlemini gerçekleştirelim,

 

static void Main(string[] args)
        {
            insan insan1 = new insan();
            insan1.Adi = "Burak";
            insan1.Soyadi = "Tungut";
            insan1.bilgileriYazdir();

            ogrenci ogrenci1 = new ogrenci();
            ogrenci1.Adi = "Anıl";
            ogrenci1.Soyadi = "Yılmaz";
            ogrenci1.ogrenciNo = 11110022;
            ogrenci1.bilgileriYazdir();

            
            Console.ReadLine();
           
        }

 

Yukarıda verdiğim ogrenci sınıfı için bilgileriYazdir adlı override methodu yazmadığımızı düşünelim. Bu durumda ekran çıktısı şöyle olacaktır ;

Çünkü bizim base sınıfımız kişi sınıfıdır ve her ne kadar ogrenci olan bir nesnede o methodu çağırsakta ogrenci sınıfında böyle bir method olmadığı için base sınıftaki methodu çağıracaktır.

Ancak yukarıdaki gibi override methodumuzu yazarisek base sınıftaki methodu ezmiş olacağız ve ekrana base sınıftan aldığı ad, soyad bilgilerini ve kendi sınıfından aldığı ogrencino üye değişken bilgilerini ekrana yazacaktır. Ekran görüntüsü şu şekilde olacaktır ;

İnşallah bu makale ile override konusunu kavramışızdır. İlerleyen günler de yine de toString methodu için bir override örneği yapacağım :)

Bir sonraki makalem de görüşmek üzere, esen kalın :)

H.Burak TUNGUT
Bilgisayar Mühendisliği Öğrencisi

Yorum Bırak

Facebook
Son Yorumlar