Nesneye Dayalı Programlama -17- Kalıtım - Virtual


Merhabalar Arkadaşlar,

Bu yazımızda Virtual anahtar kelimesinden bahsedeceğiz.



Virtual methods (sanal metotlar), base class (temel sınıf) içinde bildirilmiş ve derived class (türemiş sınıf) içinde de tekrar bildirilebilen metotlardır.
Böylelikle sanal metotlar kullanılarak nesne yönelimli programlama da çok sık başvurulan çok biçimliliği yani poliformizm (polimorphizm) uygulanmış olur.
Yani temel sınıfta bir sanal metot bildirildiğinde bu temel sınıftan türeyen sınıflardaki metotlar override edilerek, temel sınıftaki sanal metotu devre dışı bırakabilirler.

Sanal metotları bildirmek için virtual anahtar sözcüğü kullanılır. Bu anahtar sözcükle, sanal metotumuz bildirilmiş olur. Türeyen sınıfta ise, temel sınıftaki sanal metotları devre dışı bırakmak için override anahtar sözcüğü kullanılır.
Yani base class'da virtual olarak tanımladığım bir metotu derived class içinde override edebilirim. Eğer override edersem derived class içindeki metot çalışır, eğer etmez isem direkt olarak base class içindeki virtual metot çalışır.

 Virtual metotlar private olarak tanımlanamazlar, public olmak zorundadırlar. Zaten private olmasının bir anlamı yok çünkü aksi halde derived class içinde bunları override edemeyiz. Public olmasının yanı sıra protected, internal şeklinde de bildirilebilirler.

Örneğimize bakacak olursak


Kullanıcı sınıfında 2 adet virtual metot oluşturuyoruz.



Türettiğimiz Ogrenci sınıfında Override ederek Ana sınıf metodunu geçersiz kılıp kendi yazdığımız işlemleri yazıyoruz.


Programı çalıştırdığımızda CizgiCiz metodu Kullanici sınıfından çalışırken, EkranaYaz metodu Ogrenci sınıfından çalışmaktadır.


Ekran Görüntüsü

İyi çalışmalar dilerim.