5.00 / 1 oy

C# Virtual Metod Nedir ve Nasıl Kullanılır?

C# ile kalıtım (inheritance) konusuna girdiğimize göre kalıtım ile ilgili terimler hakkında da bilgi sahibi olmamız gerekir. Bugün paylaşacağım iki yazıda da virtual ve override sözcükleri hakkında temel bilgileri paylaşmaya çalışacağım.

Virtual metodlar (sanal metodlar), kendisinden kalıtılan alt sınıflar tarafından override edilebilen metodlardır.

Örnek: Araba sınıfı baz sınıf, SporAraba ise Araba sınıfından türetilen bir alt sınıf olsun. Araba sınıfının Calistir() metodunu SporAraba metodu altında değiştirebilmek (override etmek) istersek Calistir() metodunu Araba sınıfı altında tanımlarken sanal (virtual) olarak tanımlamamız gerekir.

 

Not: Override anahtar kelimesini kullanmazsak şöyle bir hata alırız: Suv.Calistir()' hides inherited member 'Araba.Calistir()'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.

Araba.cs

class Araba
{
   bool CalisiyorMu {get; set;}
   public int Motor { get; set; }
   public string Marka { get; set; }

   public virtual void Calistir () {
       CalisiyorMu = true;
       System.Console.WriteLine("rrnnnn");
   }

   public Araba (string Marka, int Motor)
   {
       this.Marka = Marka;
       this.Motor = Motor;
       CalisiyorMu = false;
   }
}

 

Suv.cs

class Suv : Araba
{
    public int Yukseklik { get; set; }

    public void DagaTirman (int Yukseklik)
    {
        this.Yukseklik = Yukseklik;
    }

    public Suv (string Marka, int Motor) :base(Marka, Motor)
    {

    }

    public override void Calistir () {
       System.Console.WriteLine("tortortor");
   }
}

 

Program.cs

Suv cip = new Suv ("BMW", 3000);
cip.Calistir(); //tortortor

 

Not 2: Eğer override ettiğimiz metodun kendisini kullanmak istersek base anahtar sözcüğünü kullanabiliriz.

public override void Calistir () {
       base.Calistir();
}

ya da base metodu implement ettikten sonra üzerine eklemeler yapabiliriz.

Örnek: 

public override void Calistir () {
       base.Calistir();
       System.Console.WriteLine("tortortor");
   }

Çıktı:

rrnnnn
tortortor

 

 

Önceki bazı diğer benzer yazılarım için;

bkz: C# ile Kalıtım Örneği (OOP)

bkz: Programlama Dillerinde Kalıtım Nedir?

bkz: C# Hata Ayıklama Sürecinde Watch, Locals ve Autos Kullanımı

bkz: C# ile iki boyutlu ArrayList Tanımlamak

bkz: C# ile iki tarih arasında rastgele tarih üretmek

bkz: C# ile dizideki en büyük ve en büyük sayıyı bulmak

mbologlu

27.04.2021 00:30

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
C# Virtual Metod Nedir ve Nasıl Kullanılır?

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.