Sealed Classes: Sınıf Kalıtımını Neden ve Nasıl Sınırlarız?

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# Sealed Classes: Sınıf Kalıtımını Neden ve Nasıl Sınırlarız?​


C# dilinde sealed anahtar kelimesi, bir sınıfın miras bırakmasını (inheritance) engelleyen bir kilittir. Bir sınıfı "mühürlediğinizde", artık o sınıftan yeni bir alt sınıf türetilemez. Bu sadece teknik bir kısıtlama değil, aynı zamanda stratejik bir mimari karardır.



1. Sealed Class Nasıl Tanımlanır?​


Bir sınıfı mühürlemek için sınıf tanımının başına sealed anahtar kelimesini eklemeniz yeterlidir.

C#:
public sealed class OdemeYonetici
{
public void OdemeYap()
{
Console.WriteLine("Ödeme işlemi gerçekleştirildi.");
}
}

// Bu kod hata verecektir:
// public class YeniOdeme : OdemeYonetici { } // HATA: 'OdemeYonetici' mühürlüdür.



2. Neden Bir Sınıfı Mühürlemeliyiz?​


Sınıf kalıtımını sınırlandırmanın üç ana nedeni vardır:


  • []Güvenlik: Kritik iş mantığı (business logic) içeren sınıfların alt sınıflar tarafından ezilerek (override) davranışlarının değiştirilmesini önlemek. Özellikle şifreleme veya ödeme sistemlerinde hayati önem taşır.
    []Tasarım Bütünlüğü: Sınıfınız tam olarak bittiyse ve genişletilmeye uygun tasarlanmadıysa, yanlış kullanımları önlemek için mühürlemek en doğrusudur.
  • Performans: .NET derleyicisi (JIT), mühürlü bir sınıfın alt sınıfı olmayacağını bildiği için "Virtual Dispatch" denilen kontrol mekanizmasını devre dışı bırakabilir. Bu, metot çağrılarında mikro düzeyde performans artışı sağlar.



3. Sadece Metotları Mühürlemek (Sealed Methods)​


Bir sınıfın tamamını mühürlemek istemeyebilirsiniz. Eğer bir üst sınıftan miras aldığınız bir metodu override ettiyseniz ve bundan sonraki alt sınıfların bu metodu bir daha ezmesini istemiyorsanız, sadece o metodu mühürleyebilirsiniz.

C#:
public class Personel
{
public virtual void ZamYap() { /* Standart zam */ }
}

public class Mudur : Personel
{
public sealed override void ZamYap()
{
// Müdürlerin zam mantığı burada sabitlenir.
// Müdür'den türeyen alt sınıflar artık bu metodu override edemez.
}
}



4. Sealed vs Static: Farkı Nedir?​


Her iki yapı da nesne yönetimini etkiler ancak kullanım amaçları tamamen farklıdır:

ÖzellikSealed ClassStatic Class
Nesne Oluşturmanew ile nesne oluşturulabilir.new ile nesne oluşturulamaz.
Miras AlmaBaşka bir sınıftan miras alabilir.Miras alamaz.
Miras BırakmaMiras bırakamaz.Miras bırakamaz.



Sonuç: Ne Zaman Kullanmalı?​



  • []Eğer yazdığınız sınıf bir "Utility" veya "Helper" sınıfıysa ve sadece belirli bir işi yapmak içinse sealed yapın.
    []Eğer sınıfınızın içindeki metotlar birbirine çok bağımlıysa ve dışarıdan bir müdahale (inheritance) sistemi bozacaksa sealed yapın.
  • Framework veya kütüphane geliştiriyorsanız, API'nizin son halini korumak için kullanın.
 
Geri
Üst