C# Software Development

C# Virtual Method Nedir?

Written by Burak Yılmaz

C# Virtaul Metod’lar, türetildiği sınıfta yeniden tanımlanabilen metodlardır. Base sınıftaki bir metodu neden virtual olarak tanımlarız? Bir çok türetilmiş sınıfta base sınıftaki haliyle kullanılacak ama bazı sınıflarda farklı şekilde de kullanılabilir dediğimizde; yapacağımız hareket metodu virtual olarak tanımlamaktır.

  • Abstract metod; temelde diyoruz ki herhangi bir alt sınıfta override edilmek zorunda ve kendi versiyonu yazılmalıdır.
  • Virtual metod; diyoruz ki base sınıftaki metod senin işini görüyorsa hiç dokunma eğer yeterli değilse geçersiz kıl ve kendine göre yaz.

Yukarıda ne demek istedik bir örnekle pekiştirelim:


    public class Vehicle
    {
        public virtual void GetSpeedAverage()
        {
            Console.WriteLine("Ortalama Hız - Base Class");
        }
    }

Yukarıda base sınıf olarak kullanacağımız yerde diyoruz ki; GetSpeedAverage metodu ekrana “Ortalama Hız – Base Class” yazısını yazar. Aracın ortalama hızını bilmiyorsanız boş geçebilirsiniz. He yok aracın ortalama hızını biliyorsanız override ederek ekrana yazdırabilirsiniz.


    public class Mercedes : Vehicle
    {
        public override void GetSpeedAverage()
        {
            Console.WriteLine("150");
        }
    }
    public class Bmw : Vehicle
    {

    }

Yukarıdaki şekilde de alt sınıfları tanımladıktan sonra Main metodu içerisinde aşağıdaki şekilde işlemlemleri yapıyoruz.

        static void Main(string[] args)
        {
            Vehicle a = new Vehicle();
            a.GetSpeedAverage();

            Vehicle mercedes = new Mercedes();
            mercedes.GetSpeedAverage();
            
            Vehicle bmw = new Vehicle();
            bmw.GetSpeedAverage();
        }

Çalıştırdığımızda programın çıktısı, sizin de tahmin edeceğiniz üzere:

About the author

Burak Yılmaz