Sealed Class (Mühürlü Sınıf)

Eyl 06, 2013
Nesneye dayalı programlama yaklaşımında kalıtım (inheritence) özelliği sayesinde bir sınıftan başka sınıflar türetilebilir ve bu sınıflara yeni özellikler eklenerek daha zengin ve kullanışlı sınıflar yaratılabilir. Ancak bazı durumlarda sınıflardan türetme yapılması istenmez. Bu durumda sınıf tanımlamasının başına mühürlü (sealed) kelimesi getirilir. Bu sayede sabit özellikler ve metotlara sahip bir sınıf elde edilir. Mühürlü sınıf (sealed class) hiçbir sınıfın kendisinden türetilemeyeceğini ifade eder.
Türeyen sınıfın anlamsız olmasının engellenmesi, bazı üyelerin güvenliğinin sağlanması ya da üyeleri statik olan sınıfların korunması amacıyla türetilme yapılmaması için sealed (mühürlü) anahtar kelimesi kullanılarak mühürlü sınıflar (sealed class) oluşturulur. 
.Net içerisinde sealed (mühürlü) olarak tanımlanmış çok sayıda sınıf vardır. Bu sınıflara örnek olarak String ve Stringbuilder sınıfları gösterilebilir.

Aşağıdaki örnekte sealed (mühürlü) olarak tanımlanan Ogrenci sınıfı gösterilmiştir.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sealed
{
    public sealed class Ogrenci
    {
        public Ogrenci() { }
        public int id { get; set; }
        public string Name { get; set; }
        public string Surname { get; set; }
    }
}

Eğer Ogrenci sınıfından AsistanOgrenci isminde yeni bir sınıf türetilmesi istenirse aşağıdaki şekilde tanımlanır:

public class AsistanOgrenci : Ogrenci
{ }

Fakat Ogrenci sınıfı mühürlü sınıf (sealed class) olduğu için yeni bir sınıf türetilemez ve şu şekilde bir hata mesajı alınır:
‘Project.AsistanOgrenci’:  cannot derive from sealed type ‘Project.Ogrenci’