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;
}
}
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();
}
}
}
Top comments (0)