Merhaba arkadaşlar,

Bugün sizlere abstract class nedir sorusuna cevap bulacağım. Abstract Class, ortak özellikli olan Class’lara base class olma rolünü üstlenir. Mesela bir class’ınız var ve bu class da pek çok ortak yön olarak özellikleriniz var. Aynı özellikleride içinde tutan başka bir classs’ınız daha var. Tekrardan aynı özellerini yazmak yerine base (yani abstract) class tanımlayıp buradan türetilmiş sınıflara kodumuzun daha efektif olmasını sağlıyoruz.

Aynı özellikleri başka sınıflara da base alarak oluşturmak istediğimiz için bu class’lara abstract class adını veriyoruz. Bu nedenle abstract class’dan nesne türetilmez. Abstract class’lar abstract anahtar kelimesini kullanılarak oluşturulur.

public abstract class users
{
}

Abstract class’lar private, protected, private internal ile tanımlanamazlar. Abstract methodlar tanımlanabilir ama static methodlar tanımlanamazlar. Abstract class’lar tanımlanırken sealed anahtar sözcüğünü kullanamayız. Sealed abstract ile ters mantıktadır ve classların miras bırakmaması için kullanılır.
Abstract Class’larda kullanılan diğer önemli nokta ise Abstract Methodlardır. Bu methodlar sadece abstract class’lar içinde tanımlanır ve override edilmek zorundadır. Abstract methodlar private tanımlanamazlar.

Abstract aslında bir yandan da virtual demektir, virtualda override zorunluğu yok iken abstract için bu zorunluluk vardır, aralarındaki fark budur.

Şimdii örnekle açıklayalım.

 abstract class mobilya
    {
        public string renk;
        abstract public void ozellikyaz();
    }
 
    class kanepe : mobilya
    {
        public string kumas;
        public override void ozellikyaz()
        {
            Console.WriteLine("Kanepenin Özellikleri");
            Console.WriteLine("Renk: {0}",renk);
            Console.WriteLine("Kumaş: {0}", kumas);
        }
    }
 
    class masa : mobilya
    {
        public string malzeme;
        public override void ozellikyaz()
        {
            Console.WriteLine("Masanın Özellikleri");
            Console.WriteLine("Renk: {0}", renk);
            Console.WriteLine("Malzeme: {0}", malzeme);
        }
    }
class Program
    {
        static void Main(string[] args)
        {
            kanepe knp1 = new kanepe();
            masa calisma_masasi = new masa();
            knp1.renk = "Siyah";
            knp1.kumas = "Deri";
            calisma_masasi.renk = "Sarı";
            calisma_masasi.malzeme = "Ahşap";
            knp1.ozellikyaz();
            calisma_masasi.ozellikyaz();
            Console.ReadKey();
        }
    }

Son olarak Abstract Class’lar new anahtar kelimesini kullanamazlar. Bir sınıf sadece bir abstract class kullanabilir. Abstract sınıfta method ve değişkenler tanımlanabilir.

Kategoriler: C#

Sümeyra Akbıyık

hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

Bir cevap yazın

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