OOP - Virtual (Sanal) Metodlar Nedir?

Bir metodun tanımında virtual keyword'ü varsa, o metod bulunduğu sınıftan miras alan bir sınıfta override edilebilir.
Yani mirasçi-alt sınıflarda içeriği değiştirilebilen metodlardır.
Aynı metod farklı sınıflarda farklı işler yapabilir.

Özellikle yazılım geliştirme sürecinde, uygulamanın farklı modüllerinde aynı metod ismine sahip olacaksa virtual metod kullanılır.

Virtual metodlar, mirasçı sınıflar tarafından override edilebilmesi için public olmalıdır.
Static metodlar virtual olamaz.

Abstract metodlara göre değiştirilmesi zorunlu tutulmadığı için daha esnektir.

Örnek kullanım

public class Hayvan
{
    public virtual string SesCıkar()
    {
       return "Hayvan Sesi";
    }
}
Hayvan adında ana class oluşturup bu sınıftan miras alacak sınıflar tarafından değiştirilmek üzere SesCıkar() adında virtual metod oluşturuldu.

public class Kedi:Hayvan
    {
         public override string SesCıkar()
         {
            return "Meowwww";
         }
    }

public class Köpek:Hayvan
    {
        public override string SesCıkar()
        {
            return "Hav Hav";
        }
    }

public class Kus:Hayvan
    {
        public override string SesCıkar()
        {
            return "Cik cik";
        }
    }

public partial class Form1 : Form
    {  
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            Köpek dog = new Köpek(); 
            MessageBox.Show(dog.SesCıkar());    //"Hav Hav"
     Kedi cat = new Kedi();
            MessageBox.Show(cat.SesCıkar());    //"Meowwww"
            Kus bird = new Kus();
            MessageBox.Show(bird.SesCıkar());   //"Cik cik"
            Hayvan animal = new Hayvan();
            MessageBox.Show(animal.SesCıkar()); //"Hayvan Sesi";
        }
     }
Hayvan sınıfından türetilmiş Kuş,Kedi ve Köpek sınıflarımız var ve bu sınıflar Hayvan sınıfındaki SesCıkar() metodunu override keywordü ezdi yani içeriğini değiştirdi. Polymophism'i anlayabilmek için önemli bir konudur.

Yorumlar