Yazdığınız bir sınıftan kalıtım yoluyla başka sınıflar üretilmesini engellemek istiyor olabilirsiniz.
Yapmanız gereken sınıfınızı sealed anahtar kelimesi ile “mühürlemek” olmalıdır. Böylece sınıfınızdan yeni sınıflar türetilemeyecektir.
sealed class AnaSinif { // Sınıf üyeleri }</pre>
AnaSinif class‘ımız sealed olduğu için, yeni sınıf türetilirken base class olamayacaktır;
class TuretilmisSinif : AnaSinif { // Derleme zamanında hata oluşur (compile-time error) }
Not : struct’lar her zaman sealed ile mühürlenmiş gibi davranırlar. struct’lar kalıtım (inheritance) desteklemez
Tüm sınıfın kalıtım yoluyla aktarılmasını engellemek yerine, tek bir method’un override edilmesini engellemek istiyor olabilirsiniz.
Bu durumda yapmanız gereken, sadece ilgili method‘u sealed ile “mühürlemek” olmalıdır;
class AnaSinif { public virtual void Goster() { } } class TuretilmisSinif : AnaSinif { // Bu kodda problem yok // AnaSinif'tan gelen Goster() method'unu override eder // Aynı zamanda sealed ile "mühürler" public sealed override void Goster() { } } class TekrarTuretilmisSinif : TuretilmisSinif { // Bu kod derlenmez. Hata oluşur // TuretilmisSinif class'ında Goster() method'u sealed anahtar kelimesi ile "mühürlenmişti" public override void Goster() { } }
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484