Sayfalar

25 Ağustos 2019 Pazar

Virtual Methods

"Ortak kullanılacak temel operasyonlar vardır. Fakat isteyen istediği metotu ezerek kendine göre kullanabilir."

Virtual metotlarda virtual - override keywordleri ile çalışılır.
Virtual metotların gövdesi, kod bloğu olmak zorundadır.

Inheritance yapılırken bir metot içerisinde tanımlanan genel işlemler, inherit alan başka bir sınıfta özel ihtiyaçlara göre kullanılmak isteniyorsa bu metot "virtual" olarak tanımlanır ve  inherit alan sınıf içerisinde bu metot "override" keywordu ile çağırılarak içersine istenilen özelleştirme yapılabilir.

Örneğin Databese sınıfında tanımlanmış genel bir Add() metotu, intherit alan MySql ve Sql sınıflarından Sql sınıfı içerisinde farklı işlemler yazılarak kullanılması gerekebilir. Bu durumda Sql sınıfında bu metot override edilerek çağırılır. Böylece MySql.Add() metotu, Base sınıftaki Add() metotunu kullanır. Sql.Add() metotu ise override edilen kendi sınıfı içindeki Add() metotunu kullanır.

Proje de Interface mi, Inheritance mı kullanmalıyım sorusunda, eğer böyle bir özelleştirmeye ihtiyacınız varsa, bu yönetimi interfaceler ile kullanamayız.

class Program
{
    static void Main(string[] args)
    {
        Sql sql = new Sql();
        MySql mySql = new MySql();
 
        sql.Add();      // Sonuç "Added by overrided Sqlcode!"
        mySql.Add();    // Sonuç "Added by default code"
 
        sql.Delete();   // Sonuç "Added by default code"
        mySql.Delete(); // Sonuç "Added by default code"
 
        Console.ReadLine();
    }
 
}
 
class Database
{
    public virtual void Add()
    {
        Console.WriteLine("Added by default code");
    }
 
    public void Delete()
    {
        Console.WriteLine("Deleted by default code");
    }
 
}
 
class Sql : Database
{
    public override void Add()
    {
        Console.WriteLine("Added by overrided Sqlcode!");
        //base.Add();
    }
 
}
 
class MySql : Database
{
 
}



MVC LOADING TOO SLOW ISSUE