C# programlama dilinde kalıtım (inheritence) ve çok biçimlilik (polymorphism) konularında temel konulara değindik ve istediğimiz virtual metodları override ettik. Ancak her metodun override edilmemesi, her sınıftan da kalıtım ile alt sınıflar üretilmemesi gereken yapılar olabilir. Sealed anahtar sözcüğü de bu amaçla sınıflar ve metodlar için modifer olarak kullanılan bir anahtar kelimedir.
- Sealed anahtar sözcüğü bir sınıf için kullanıldığında o sınıftan kalıtım yapılamaz.
- Sealed anahtar sözcüğü override edilmiş bir metod için kullanıldığında ise o metod bir alt sınıfta tekrar override edilemez.
Örnek 1: Sınıflar için sealed anahtar sözcüğü kullanımı
sealed class Araba
{
...
}
class Limuzin :Araba
{
...
}
Hata çıktısı: ...Cannot derive from sealed type...
Örnek 2: Metodlar için sealed anahtar sözcüğü kullanımı
class Araba
{
public string Marka { get; set; }
public string Model { get; set; }
public Araba(string marka, string model)
{
this.Marka = marka;
this.Model = model;
}
public virtual void Calistir()
{
System.Console.WriteLine("Araba çalıştı");
}
}
class SporAraba :Araba
{
public bool UstuAcilir { get; set; }
public SporAraba(string marka, string model, bool ustuacilir) :base(marka,model)
{
this.UstuAcilir = ustuacilir;
}
public sealed override void Calistir()
{
System.Console.WriteLine("Spor araba çalıştı");
}
}
class CoupeAraba :SporAraba
{
public CoupeAraba(string marka, string model, bool ustuacilir) :base(marka,model)
{
this.UstuAcilir = ustuacilir;
}
public override void Calistir() //HATA
{
System.Console.WriteLine("Coupe araba çalıştı");
}
}
Hata çıktısı: Cannot override inherited member ... because it is sealed
Önceki bazı diğer benzer yazım için;
bkz: C# Polymorphism (Çok Biçimlilik) Nedir?
bkz: C# Base Nedir? Kullanımı ve Örnekleri
bkz: C# IEnumerable Nedir?
bkz: C# ve Generic ile Non-Generic Koleksiyonlar Nelerdir?
bkz: C# Programlama Dilinde Koleksiyon Nedir?
bkz: Interface Nedir?