DEV Community

Hakan Yalitekin
Hakan Yalitekin

Posted on • Originally published at hakanyalitekin.wordpress.com on

Virtual (Sanal) Metot

Sanal metot; temel sınıfı içerisinde yazılan metodu, miras alan sınıflarda override edilerek (ezilerek), yeniden yazılmaya müsait yapılarda ki metotlara verilen genel isimdir.

Sanal metotlar; sıradan metotların önüne “ virtual ” anahtarı eklenerek oluşturulurlar. Kullanım amacı, oluşturulan metodun değiştirebilirliğini, ihtiyaca göre yeniden yazılabileceğini belirtir.

Şöyle gerçek dışı ama basit bir örnek ile anlatmaya çalışacak olursam, Islem adında bir sınıfımız olsun ve bu sınıfımız içerisinde de Topla(int a , int b*)* adında bir metodumuz olsun. Bu Topla metodumuz verilen iki değeri toplayan bir metot. Islem sınıfımızı miras alarak oluşturduğumuz Farklı : Islem sınıfında Topla metodunu ezip toplamı 100 ile çarpmak istiyoruz. (psikopatız var mı ?) Örnek her ne kadar saçma olsa da anlatımı çok sade tutmaya çalıştım. Aşağıda bu durumu resmetmeye çalıştım.


    class Islem
    {
        public virtual int Topla(int a, int b)
        {
            return a + b;
        }
    }

    class Farkli : Islem
    { 
//Bir class’ın virtual metotolarını görmek ve ezmek için, ezilmek istenilen alanda override yazmak yeterlidir.
        public override int Topla(int a, int b)
        {
            return (a + b) * 100;
        }
    }

Enter fullscreen mode Exit fullscreen mode

Aşağıda ki şekilde de kullanıp sonucu görmek mümkündür.


namespace VirtualMethods
{
    class Program
    {
        static void Main(string[] args)
        {
            Islem islem = new Islem();
            Console.WriteLine(islem.Topla(2, 5).ToString()); // 7

            Farkli farkliIslem = new Farkli();
            Console.WriteLine(farkliIslem.Topla(2,5).ToString()); // 700

            Console.ReadKey();
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Discussion (0)