Sayfalar

25 Ağustos 2019 Pazar

Abstract Sınıflar


Keyword'u "abstract" olarak kullanılır.
Abstract sınıflar new'lenemezler.
Interface ve virtual metotların bir arada kullanımı gibi düşünülebilir.
Abstract sınıf içerisinde "abstract" keywordü ile tanımlanan metotların gövdeleri olamaz.(Tıpkı interfacelerde tanımlanan metotlar gibi)


Örneğin farklı aracı kurumlara emir yollamadan önc,e her işlemde ortak kullanılacak, son fiyatı alan bir GetPrice() metotu ile ilgili kuruma emir yollayacak SendOrder() metotu tanımlamak gerektiğinde, ayrıca bir Interface ve Base sınıf tanımlamak yerine bu iki özelliği bir arada kullanabliceğimiz bir Abstract sınıf tanımlanabilir.

class Program
{
    static void Main(string[] args)
    {
        Order order = new IsyatirimOrder();
        order.Getprice();        // Sonuç: Price getted by defult"
        order.SendOrder();       // sonuç: Order sent to İşyatırım"
 
        Order order2 = new OsmanliMenkulOrder();
        order.Getprice();        // Sonuç: Price getted by defult"
        order.SendOrder();       // sonuç: Order sent to OsmanlıMenkul"
 
        Console.ReadLine();
 
    }
}
 
 
abstract class Order
{
    // Tıpkı bir gerçek sınıf gibi , 
    // miras alınan sınıflarda ortak kullanılabilinecek metot ekledik.
 
    public void Getprice()              
    {
        Console.WriteLine("Price getted by defult");
    }
 
 
    // Bir interface gibi zorunlu kullanılacak metotu tanımladık.
 
    public abstract void SendOrder(); 
    
}
 
class IsyatirimOrder : Order
{
    public override void SendOrder()
    {
        Console.WriteLine("Order sent to İşyatırım");
    }
}
 
class OsmanliMenkulOrder : Order
{
    public override void SendOrder()
    {
        Console.WriteLine("Order sent to OsmanliMenkul");
    }
}

MVC LOADING TOO SLOW ISSUE