2 Ekim 2018 Salı

Abstract class nedir? Nasıl kullanılır?

1 comment
Bu yazıda Abstract class'ın ne olduğunu, nasıl kullanılacağını anlatmaya çalışacağım.

Abstract class


Class'ların miras alacağı ana class'lardır. Abstract class'ta oluşturulan abstract metotların alt sınıflarda override edilmesi gerekirken, abstract olarak tanımlanmayan metotlar için ekstra bir işlem yapılmasına gerek yoktur.

Hemen basit bir örnek üzerinden açıklamak gerekirse :

Öncelikle Ulke adında abstract class oluşturuyorum. Daha sonra da bu class'tan inherit alan Almanya, Fransa ve İtalya class'larını oluşturacağım.


abstract class Ulke
{
        public string Kita() {
            return "Avrupa";
        }
        public string ParaBirimi() {
            return "Euro";
        }
        public abstract string Dil();
  }

Almanya, Fransa ve İtalya. Üçü de Avrupa kıtasında bulunduğu ve para birimleri de Euro olduğu için, Kita ve ParaBirimi metotlarını abstract olarak tanımlamadım. Dil ise tüm ülkelerde farklı. Bu nedenle Dil metodunu abstract olarak tanımladım ve 3 alt sınıfta da override ederek kendi değerlerini set edeceğim.

Öncelikle Almanya sınıfımı Ulke sınıfından miras alacak şekilde oluşturuyorum.


class Almanya : Ulke 
{

}

Projeyi build ettiğimde Dil metodunu implement etmediğim için hata alıyorum.

Tüm class'larımı oluşturuyorum.


class Almanya : Ulke
 {
 public override string Dil()
        {
            return "Almanca";
 }
}

class Fransa : Ulke
{
        public override string Dil()
        {
            return "Fransızca";
        }
}

class Italya : Ulke
{
        public override string Dil()
        {
            return "İtalyanca";
        }
}

Görmek istediğim değerleri ekrana basıyorum.


            var a = new Almanya();
            var f = new Fransa();
            var i = new Italya();

            Console.WriteLine("Almanya : " + a.Kita() + " " + a.ParaBirimi() + " " + a.Dil());
            Console.WriteLine("Fransa : " + f.Kita() + " " + f.ParaBirimi() + " " + f.Dil());
            Console.WriteLine("İtalya : " + i.Kita() + " " + i.ParaBirimi() + " " + i.Dil());

Sonuç da aşağıdaki gibi.


Read More