Kalıtım nesneye dayalı programlamada ki en büyük etkendir. Projede tanımladığımız bir class başka bir class veya interface'den ihtiyaca göre inheret olabilir ve böylelikle bir nevi oop'nin faydalarından yararlanmış oluruz. Ancak bazen yazmış olduğumuz bir class'ın başka class'lara kalıtım vermesini istemeyebiliriz. Neden böyle bir şeye ihtiyaç duyalım ki dersek genellikle security konularından dolayı böyle bir durum söz konusu olabilir. C# tarafında bu ihtiyacımızı karşılayacak olan sealed keyword'ü bulunmaktadır. Eğer bir class sealed tanımlanırsa bu class alt class'lara kalıtım veremez.
Örnek olarak ; sealed tanımlı A class'ımız olsun ve 2 tanede sealed olmayan B,C adında class'larımız olsun
// Sealed class
sealed class A
{
}
public class B
{
}
//Sorunsuz çalışır
public class C : B
{
}
//Hata verir !!! cannot derive from sealed type 'A'
public class C : A
{
}
C class'ı B class'ından kalıtım alabilirken A class'ından kalıtım alamayacaktır. Çünkü A class'ı sealed'dır ve başka hiçbir class'a kalıtım veremez.
.Net Framework içerisinde bir çok sealed class bulunmaktadır. Bunlardan en tanınmış olanı String class'ı dır. Bu nedenledir ki herhangi bir class String class'ından kalıtım almaya çalıştığında "cannot derive from sealed type 'string'" hatasını verir.