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

soyut anahtar sözcüğü, eksik olan ve türetilmiş bir sınıfta uygulanması gereken sınıflar ve sınıf üyeleri oluşturmanıza olanak tanır.

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

Soyut Sınıflar ve Sınıf Üyeleri

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

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

Soyut sınıf örneği oluşturulamaz. Soyut sınıfın amacı, birden çok türetilmiş sınıfın paylaşabileceği bir temel sınıfın ortak 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 türetilmiş bir sınıf oluşturarak bu kitaplığı kullanan programcıların sınıfın kendi uygulamasını sağlamasını gerektirebilir.

Soyut sınıflar soyut yöntemleri de tanımlayabilir. Bu, yöntemin dönüş türünden önce anahtar sözcüğü abstract eklenerek gerçekleştirilir. Örneğin:

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

Soyut yöntemlerin uygulaması yoktur, bu nedenle yöntem tanımını normal yöntem bloğu yerine noktalı virgül izler. Soyut sınıfın türetilmiş sınıfları tüm soyut yöntemleri uygulamalıdır. Soyut sınıf bir temel sınıftan bir sanal yöntemi devraldığında 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ıf için hala sanaldır. Soyut yöntemi devralan bir sınıf, yöntemin özgün uygulamasına erişemez; önceki örnekte F DoWork sınıfında D sınıfı çağrılamaz DoWork . 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, anahtar sözcüğü sealed sınıf tanımından önce yerleştirilerek korumalı olarak bildirilebilir. Örneğin:

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

Korumalı sınıf temel sınıf olarak kullanılamaz. Bu nedenle soyut bir sınıf da olamaz. Korumalı sınıflar türetme işlemini engeller. Hiçbir zaman temel sınıf olarak kullanılamadıkları için bazı çalışma zamanı iyileştirmeleri korumalı sınıf üyelerini biraz daha hızlı çağırabilir.

Temel sınıfın sanal üyesini geçersiz kılan türetilmiş bir sınıftaki yöntem, dizin oluşturucu, özellik veya olay bu üyeyi korumalı olarak bildirebilir. Bu, üyenin daha fazla türetilmiş sınıf için sanal yönünü yok eder. Bu, anahtar sözcüğü sınıf üyesi bildiriminde sealed override anahtar sözcüğünden önce koyarak gerçekleştirilir. Örneğin:

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

Ayrıca bkz.