C# Virtual ve Override Kullanımı

Virtual ve Override nedir bunları çok kısaca tanımlarsak;

Virtual : Bir sınıfın miras alınan sınıflardaki metodunun ezilebilmesini, değişebilmesini sağlar.
Override : Miras alınan metodun ezilmesi işlemini sağlar, yani metodun içini değiştirmektir.
Tanım olarak kısaca bunları diyebiliriz.

 
Şimdi örnek üzerinden gidersek daha anlaşılır olacağını düşünüyorum,

Aşağıdaki gibi Araba isminde bir classımız olsun.

public class Araba
{
    public decimal fiyati = 500;

    public virtual decimal Fiyat()
    {
        return fiyati + 200;
    }
}

Burada “fiyati” değişkenin değerini sabit olarak 500 verelim.
Ayrıca bu class içerisinde virtual olarak yazılmış Fiyat isminde bir metodumuz olsun ve bize fiyati değişkenine +200 ekleyerek sonuç döndürsün.

 
Şimdide aşağıdaki gibi IkinciElAraba isminde bir classımız olsun ve bu da Araba classını miras alsın.

public class IkinciElAraba : Araba
{
    public override decimal Fiyat()
    {
        return fiyati - 100;
    }
}

Burada Fiyat isminde bir metot görüyorsunuz. Bu metot aslında Araba class’ının içindeki metotdur ve dikkat ederseniz override edilerek çağrılmıştır ve bize döndürdüğü değer artık değişmiştir. Yani fiyati değişkeninden -100 çıkarılmış hale getirilmiştir.

 
Bu iki class’ı kullanıp, metodun döndürdüğü durumlara bakarsak, sonuç aşağıdaki gibi olacaktır.

Araba araba = new Araba();
IkinciElAraba ikinciElAraba = new IkinciElAraba();

Console.WriteLine("Araba : " + araba.Fiyat()); 
//Sonuç 700'dür

Console.WriteLine("İkinci El Araba : " + ikinciElAraba.Fiyat()); 
//Sonuç 400'dür

Böylelikle aynı metodu 2 farklı değer döndürecek şekilde kullanabiliyoruz.
 

Umarım bu basit örnekle virtual ve override kavramları az da olsa anlaşılabilmiştir. Elimden geldiğince basit ve kısa tutmaya çalıştım.
Anlaşılmayan bir yer varsa lütfen yorumlarda belirtiniz, hepinize kolay gelsin 🙂

4 yorum “C# Virtual ve Override Kullanımı”

  1. Aslında % 100 doğru bir örnek olmamış. Nedeni şudur, ovveride olarak tanımladığınız methodu virtural olarak tanımlasanız da aynı sonuç alınacaktı 🙂

    1. Buradaki amaç virtual ve override kullanımlarını göstermekti, override olarak tanımladığım metodu virtual olarak kullanabilirsiniz ama bu doğru bir yöntem olmaz.

    1. new yapmaktan kastınız nedir, amacım kullanım yöntemlerini basit bir mantıkla göstermekti, tam olarak demek istediğinizi anlayamadım 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir