Soyut ve Korumalı Sınıflar ve Sınıf Üyeleri (C# Programlama Kılavuzu)

Abstract anahtar sözcüğü, tamamlanmamış ve türetilmiş bir sınıfta uygulanması gereken sınıflar ve sınıf üyeleri oluşturmanızı sağlar.

Sealed anahtar sözcüğü, bir sınıfın devralınmasını veya daha önce sanalolarak işaretlenmiş belirli sınıf üyelerini engellemenizi sağlar.

Soyut sınıflar ve sınıf üyeleri

Sınıflar, sınıf tanımından önce anahtar sözcüğü yerleştirilerek soyut olarak bildirilemez abstract . Örneğin:

public abstract class A
{
    // Class members here.
}

Soyut bir sınıf örneği oluşturulamıyor. Soyut bir sınıfın amacı, birden fazla türetilmiş sınıfın paylaşabileceği bir temel sınıfın ortak bir tanımını sağlamaktır. Örneğin, bir sınıf kitaplığı, işlevlerinin çoğuna parametre olarak kullanılan bir soyut sınıfı tanımlayabilir ve bir türetilmiş sınıf oluşturarak bu kitaplığı kullanan programcıların, sınıfının kendi uygulamasını sağlamasını gerektirebilir.

Soyut sınıflar, Soyut yöntemler de tanımlayabilir. Bu, abstract yönteminin dönüş türünden önce anahtar sözcüğü eklenerek yapılır. Örneğin:

public abstract class A
{
    public abstract void DoWork(int i);
}

Soyut yöntemlerin hiçbir uygulamaya sahip olmadığı için, yöntem tanımının normal yöntem bloğu yerine noktalı virgül gelmelidir. Soyut sınıfın türetilmiş sınıfları tüm soyut yöntemleri uygulamalıdır. Bir soyut sınıf bir temel sınıftan sanal bir yöntemi devralıyorsa, soyut sınıf, soyut bir yöntemle sanal yöntemi geçersiz kılabilir. Örneğin:

// compile with: -target:library
public class D
{
    public virtual void DoWork(int i)
    {
        // Original implementation.
    }
}

public abstract class E : D
{
    public abstract override void DoWork(int i);
}

public class F : E
{
    public override void DoWork(int i)
    {
        // New implementation.
    }
}

Bir virtual Yöntem bildirilirse abstract , soyut sınıftan devralan herhangi bir sınıfta hala sanal olur. Soyut bir yöntemi devralan sınıf, yöntemin orijinal uygulamasına erişemez — önceki örnekte, DoWork F sınıfı üzerinde, DoWork D sınıfı üzerinde çağrılamaz. Bu şekilde, soyut bir sınıf, türetilmiş sınıfları sanal yöntemler için yeni yöntem uygulamaları sağlamaya zorlayabilir.

Korumalı sınıflar ve sınıf üyeleri

Sınıflar, sınıf tanımından önce anahtar sözcüğü yerleştirilerek Sealed olarak bildirilebilecek sealed . Örneğin:

public sealed class D
{
    // Class members here.
}

Sealed bir sınıf temel sınıf olarak kullanılamaz. Bu nedenle, bir soyut sınıf de olamaz. Sealed sınıflar türetmeye engel. Bunlar hiçbir zaman temel sınıf olarak kullanılabileceğinden, bazı çalışma zamanı iyileştirmeleri sealed sınıf üyelerinin çağrılmasını biraz daha hızlı hale getirir.

Temel sınıfın bir sanal üyesini geçersiz kılan türetilmiş bir sınıfta bir yöntem, Dizin Oluşturucu, özellik veya olay bu üyeyi korumalı olarak bildirebilir. Bu, daha fazla türetilmiş sınıf için üyenin sanal yönünü geçersiz kılar. Bu, sealed anahtar sözcüğü, sınıf üye bildirimindeki override anahtar sözcüğünden önce yerleştirilerek gerçekleştirilir. Örneğin:

public class D : C
{
    public sealed override void DoWork() { }
}

Ayrıca bkz.