sealed ve abstract
sealed abstract birleşimini ve sınırlamaları öğrenirsin.
sealed ve abstract
sealed bir sınıfın miras alınmasını engeller. abstract ise miras alınmayı zorunlu kılar. Bu yüzden bir sınıf aynı anda hem sealed hem abstract olamaz; bu geçersiz bir kombinasyondur.
Ancak sealed override metot geçerlidir: abstract bir sınıfın alt sınıfı, bir abstract metodu override ederken sealed işaretleyerek daha alt sınıfların onu tekrar override etmesini engelleyebilir. public sealed override void MakeSound() son uygulamadır.
Ne zaman sealed?
sealed, bir sınıfın davranışını değiştirmesini istemediğin durumlarda kullanılır. Güvenlik açısından kritik sınıflar, performans optimizasyonu veya tasarım kararı olabilir.
Örnek: string sealed sınıftır çünkü çekirdek davranışını değiştirmek tehlikeli olur. Bir abstract sınıftan türeyen Dog sınıfı, MakeSound'u sealed yaparak «hav hav» davranışının alt sınıflarca değiştirilmesini engelleyebilir.
Uygulama Mühürlü köpek
Dog sınıfını tanımla: Animal miras alır ve MakeSound'u public sealed override void MakeSound() olarak override eder. Gövde Console.WriteLine("Hav"); yapsın. Main'de Animal a = new Dog(); üretip a.MakeSound(); çağır.
Örnek çözümü göster
Animal { public sealed override void MakeSound() { Console.WriteLine("Hav"); } }` şeklinde yaz. Main içine `Animal a = new Dog(); a.MakeSound();` yaz.
Örnek çözüm:
using System;
abstract class Animal
{
public abstract void MakeSound();
}
class Dog : Animal
{
public sealed override void MakeSound()
{
Console.WriteLine("Hav");
}
}
class Program
{
static void Main()
{
Animal a = new Dog();
a.MakeSound();
}
}
Kendini test et
-
Eşleştir: sealed ve abstract
- sealed sınıf
- miras alınamaz
- sealed override
- daha alt sınıfta override edilemez
- abstract sınıf
- miras alınmalıdır
- sealed + abstract sınıf
- geçersiz kombinasyon
-
sealed ve abstract ile ilgili hangisi doğrudur?
- Bir sınıf hem sealed hem abstract olabilir.
- sealed metot override edilebilir.
- sealed override, daha alt sınıflarda override edilemeyen metotlar için kullanılır.
- sealed abstract metot tanımlanabilir.
Cevabı göster
sealed override, daha alt sınıflarda override edilemeyen metotlar için kullanılır. — Doğru. sealed override, son uygulamayı belirler ve daha alt sınıflar tarafından override edilemez.
-
Boşluğu doldur: sealed override
public ____ override void MakeSound() { Console.WriteLine("Hav"); }Cevabı göster
public sealed override void MakeSound() { Console.WriteLine("Hav"); }