CodeBlanks Logo Icon CodeBlanks

sealed ve abstract

C# kursu · Orta seviye · Ders 57/116

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

  1. 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
  2. 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.

  3. Boşluğu doldur: sealed override

    public ____ override void MakeSound()
    {
        Console.WriteLine("Hav");
    }
    Cevabı göster
    public sealed override void MakeSound()
    {
        Console.WriteLine("Hav");
    }

Orta seviye bölümündeki tüm dersler