C# Software Development

Abstract Class Nedir?

Written by Burak Yılmaz

Bu yazımızda abstract class nedir? abstract method nedir? sorularının cevaplarını arayacağız. Abstraction kelime anlamı olarak soyutlama anlamına gelir.

Abstract class; birden fazla ortak özelliği ve işlevi olan sınıfların, ortak oldukları yerleri tek bir yerde toplayan ve bu sınıflara base class olma özelliğini üstlenen sınıflardır.

  • Abstract sınıflardan yeni bir nesne oluşturulamaz. Sadece diğer sınıflara base class olmak için yazılır.

Abstract method; gövdesi bulunmayan, abstract class içerisinde tanımlanan ve türetilen sınıflarda override edilen metodlardır.

Şimdi yazılım dünyasından bir örnekle konuyu daha iyi anlamaya çalışalım. Bir çoğumuz projelerimizde loglama işlemi yapıyoruz. Bazı logları veritabanına bazı logları text dosyasına yazıyoruz. Loglarımızı yazmadan önce gelen hata kodunun açıklamasını okuyoruz ve ardından bu açıklamaları bir yere logluyoruz.
Baktığımız zaman iki loggerda da aynı işlemleri yapacağız. Metod olarak yazarsak GetHataAciklama ve Write metodlarımız var. Peki GetHataAciklama iki sınıfta da aynı şekilde çalışmayacak mı? Hee o zaman bunu abstract sınıfa yazabiliriz. Peki Write metodu iki sınıfta da var mı? El cevap var. Peki aynı şekilde mi çalışıyor? Hayır çalışmıyor. Demek ki bu metodu abstract metod olarak tanımlayacağız. Böyle hikaye gibi yazdım ama şimdi bu yazdıklarımı koda dökeceğiz.

Öncelikle abstract class ımızı tanımlayalım :

    public abstract  class Logger
    {
        //TÜreyen her bir sınıfta override edilip, farklı şekillerde çalışabilir.
        public abstract void Write(string aciklama);

        //Türeyen tüm sınıflarda bu şekilde çalışabilir.
        public string GetHataAciklama()
        {
            return "aciklama";
        }
    }

Yukarıdaki sınıfta görebileceğiniz gibi abstract metodumuzun gövdesini yazmadık. Bu metodun gövdesini türeyecek olan sınıflarda yazacağız. Logu veritabanına yazan sınıfı tanımlarken aldığımız hatayı görmenizi istedim. Diyor ki kardeşim türediğin sınıftaki abstract metodu override edeceksin, yoksa böyle hata alırsın 🙂

DbLogger ve TextLogger sınıflarında Write metodunu override ederek sınıfları tanımlıyoruz.

Şimdi bu classlardan bir nesne yaratalım.

Gördüğünüz gibi her iki metodda nesnemizde gözükmektedir.

About the author

Burak Yılmaz