Ortak özellikleri modellemek için soyut sınıflar kullanılabilir. Interface sınıflarla birbirlerine çok benzerler ama bazı karakteristik özellikleriyle birbirlerinden ayrılırlar.
Abstract sınıflar :
- Abstract fonksiyonlar ve methodlar private olamazlar. Public veya protected olabilirler.
- Fonksiyonlar da ve methodlarda kullanılırlar.
- Somut nesnelerle oluşturulamazlar.
- Alan (field) içerebilirler.
- Alt sınıflar kalıtım ile miras alınan tüm özelliklerini gerçeklemek zorunda değildir.
- Abstract olan methodlar ve fonksiyonlar kalıtılan alt sınıflarda override edilerek kullanılmalıdır.
Şimdi otomobil adında bir abstract sınıf oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
abstract class Otomobil { public string marka; public int uretimYili; public abstract string getMarka(); public int getUretimYili() { return this.uretimYili; } public void BilgiYaz() { Console.WriteLine("\n"); Console.WriteLine(" Marka : " + getMarka() + "\n"); Console.WriteLine(" Üretim Yılı : " + getUretimYili() + "\n"); Console.ReadLine(); } } |
OtoUret adından yeni bir sınıf oluşturulan ve Otomobil sınıfını implemente edelim.
1 2 3 4 5 6 7 |
class OtoUret:Otomobil { public override string getMarka() { return marka; } } |
OtoUret alt sınıfında üst sınıfta abstract olan getMarka methodu override edilmelidir. Diğerlerinin implemente edilmesine gerek yoktur. Şimdi BMW marka bir otomobil üretelim.
1 2 3 4 5 6 7 8 9 10 |
class Program { static void Main(string[] args) { Otomobil oto = new OtoUret(); oto.marka = "BMW"; oto.uretimYili = 2013; oto.BilgiYaz(); } } |
Abstract sınıflarda ortak değerler ana sınıfta toplanır ve alt sınıflarda sadece alt sınıf için gerekli ekleme ve değişiklikler yapılarak kullanılır. Alt sınıflar istedikleri takdirde, üst sınıfta tanımlanmış bir metodu, değiştirip kullanabilir.
Yararlanılan Kaynaklar :
- Özcan Acar – Java Tasarım Şablonları ve Yazılım Mimarileri
Uygulama dosyasını Buradan indirebilirsiniz.