C#

C# Abstract Classes

Yazar - UĞUR

Önceki yazıda anlatıldığı gibi, Polymorphism , her sınıfta farklı uygulamalara sahip olan aynı metotla farklı türetilmiş sınıflara sahipseniz kullanılır. Bu davranış, türetilmiş sınıflarda geçersiz kılınan virtual metotlarla sağlanır.
Bazı durumlarda, virtual metodun temel sınıfında ayrı bir tanıma sahip olması için anlamlı bir gerekçe yoktur.
Bu metotlar abstract anahtar sözcüğüyle tanımlanır ve türetilen sınıfların bu metodu kendi başlarına tanımlamaları gerektiğini belirtir.
abstract metod içeren bir sınıfın nesnelerini oluşturamazsınız, bu nedenle sınıfın abstract olması gerekir. Yani bu sınıftan nesne oluşturamayız ama bu sınıftan türetilmiş sınıfların nesnesini olştururuz.
Shape sınıfında abstract bir metot kullanabiliriz:

abstract class Shape {
 public abstract void Draw();
}

Gördüğünüz gibi Draw metodu  abstract ve dolayısıyla herhangi bir içeriği yok. süslü parantezlere bile ihtiyacınız yok; ifadeyi yalnızca noktalı virgülle sonlandırın.
abstract bir metot içeren Shape sınıfının kendisi abstract ilan edilmelidir. abstract metot bildirimlerine abstract sınıflarda izin verilir.

abstract(soyut) metot bildirimlerine abstract(soyut) sınıflarda izin verildiğini unutmayın. abstract(soyut) olarak işaretlenen veya abstract(soyut) bir sınıfa dahil olan üyeler abstract(soyut) sınıftan türetilen sınıflar tarafından uygulanmalıdır. abstract(soyut) bir sınıf birden çok abstract(soyut) üyeye sahip olabilir.

abstract bir sınıf diğer sınıfların temel sınıfı olarak düşünülmüştür. Türetilmiş sınıflar için bir şablon gibi davranır.
abstract sınıfı olan başka sınıfları türetebilir ve kendi Draw () yöntemlerini tanımlayabiliriz:

abstract class Shape {
 public abstract void Draw();
}
class Circle : Shape {
 public override void Draw() {
 Console.WriteLine("Circle Draw");
 }
}
class Rectangle : Shape {
 public override void Draw() {
 Console.WriteLine("Rect Draw");
 }
}
static void Main(string[] args) {
 Shape c = new Circle();
 c.Draw();
 //Outputs "Circle Draw"
}

Abstract sınıfları aşağıdaki özelliklere sahiptir:
Abstract bir sınıf nesnesi olamaz.
Abstract sınıf, Abstract metotlar ve accessors içerebilir.
Abstract bir sınıftan türetilen abstract olmayan bir sınıf, devralınan abstract metotların ve erişimcilerin fiili uygulamalarını içermelidir.

Abstractbir sınıfı sealed (mühürlenmiş) değiştirici ile değiştirmek mümkün değildir, çünkü iki değiştirici ters anlamlara sahiptir. sealed değiştirici, bir sınıfın devralınmasını engeller ve abstract değiştirici, bir sınıfın devralınmasını gerektirir.

Yorum Yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.