abstract kullanım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
abstract kullanım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Kalıtımı önlemek için sealed kullanmak [15]

csharp blogsahin
Kalıtım her ne kadar güçlü ve kullanışlı olsa da kimi zaman bunu önlemek isteyeceksiniz. Örneğin, özelleştirilmiş bir donanım aygıtının, söz gelişi bir tıbbi monitörün ilk kullanıma hazırlanması ile ilgili adımları bir araya getiren bir sınıfınız olabilir. Böyle bir durumda, sınıfınızı kullanan kullanızıların monitörün ilk kullanıma hazırlanma şeklini değiştirebilmelerini istemezsiniz. Bu, aygıtın büyük olasılıkla hatalı olarak hazırlanmasına neden lacaktr. Sebep ne olursa olsub C#'ta sealed anahtar kelimesi kullanılarak bir sınıfın kalıtım yoluyla aktarılması kolaylıkla önlenebilir.

Özet Sınıfların Kullanımı - abstract [14]

Bazen, şöyle bir temel sınıf oluşturmak istersiniz: O sınıf sadece kendisinden türetilmiş sınıfların genelleştirilmiş bir şekli olmalı, detaylar her bir türetilmiş sınıf tarafından doldurulmalıdır. Bu tür bi sınıf, türetilmiş sınıfların uygulamaları gereken metotların özünü belirler, fakat bu metotlardan biri ya da daha fazlasi için kendisi bir uygulama sağlamaz. Temel sınıf, anlamlı bir metot uygulaması oluşturamadığı zaman böyle bir durumla karşılaşılabilir. TwoDShape'in yukarıdaki örnekte(konu [13]) kullanılan versiyonunda bu tür bir durum söz konusudur. area()'nın tanımı yalnızca bir yer belirteci olmaktan ibarettir. area(), hiçbir nesne tipinin alanını hesaplayıp, ekranda göstermez.

Kendi sınıf kütüphanelerinizi oluşturdukça göreceksiniz ki, bir metodun kendi temel sınıfı kapsamında anlamlı bir tanımının olmaması yaygın bir kullanım değildir. Bu durumu iki şekilde kontrol altına alınabilir. Birincisi, önceki örnekte gösterildiği gibi metodun bir uyarı mesajı vermesi yeterlidir. Bu yöntem belirli durumlarda -örneğin hata ayıklama sırasında- yararlı olsa da bu yöntemi uygulamak genellikle uygun değildir. Türetilmiş sınıfın bir anlam taşıması için türetilmiş sınıf tarafından devre dışı bırakılması gereken metotlara sahip olabilirsiniz. Triangle sınıfını ele aldğımız zaman area() tanımlanmazsa bu sınıfın bir anlamı kalmaz. Bu durumda, türetilmiş sınıfın gerçekten gerekli metotların tümünü devre dışı bırakmasını garanti edecek bir çözüme ihtiyacınız olur. Bu probleme C#'ın getirdiği çözüm özet metot kullanımıdır.