Sdílet prostřednictvím


Abstraktní a uzavřených tříd a členů tříd (Příručka programování C#)

Abstraktní klíčového slova umožňuje vytvořit třídy a třídy členy, které jsou neúplné a musí být prováděny v odvozené třídě.

Uzavřených klíčového slova umožňuje zabránit dědění třídy nebo členy určité třídy, které byly dříve označeny virtuální.

Abstraktní třídy a členy tříd

Třídy lze deklarovat jako abstraktní vložením klíčové slovo abstract před definice třídy.Příklad:

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

Nelze vytvořit instanci abstraktní třídy.Účelem abstraktní třídy je stanovit společné definice základní třídy, který můžete sdílet více odvozené třídy.Knihovna tříd může například definovat abstraktní třída, která se používá jako parametr pro mnoho svých funkcí a vyžadují programátoři pomocí knihovny poskytují vlastní implementace třídy vytvořením odvozené třídy.

Abstraktní třídy mohou definovat také abstraktní metody.To lze provést přidáním klíčové slovo abstract před návratový typ metody.Příklad:

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

Abstraktní metody mají žádná implementace, takže definice metody následuje středník namísto běžné metody bloku.Odvozené třídy abstraktní třída musí implementovat všechny abstraktní metody.Při abstraktní třída dědí virtuální metody základní třídy, můžete přepsat abstraktní třída virtuální metody s abstraktní metody.Příklad:

// 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.
    }
}

Pokud virtual metoda je deklarována jako abstract, je stále virtuální se dědí z třídy abstraktní třídy.Třída dědí abstraktní metodu nelze získat přístup k původní implementace metody – v předchozím příkladu DoWork třídy nelze volat f DoWork na třídy D.Tímto způsobem lze vynutit abstraktní třídy odvozené třídy poskytnout nové implementace metody pro virtuální metody.

Uzavřených tříd a členů tříd

Třídy mohou být deklarovány jako uzavřených vložením klíčové slovo sealed před definice třídy.Příklad:

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

Zapouzdřené třídy nelze použít jako základní třída.Z tohoto důvodu také nemůže být abstraktní třídy.Uzavřených tříd zabránit odvození.Protože nikdy je možné použít jako základní třída, můžete provést některé optimalizace běhu volající zapouzdřené třídy členy poněkud rychlejší.

Člen třídy, metody, pole, vlastnost nebo událost, na který potlačuje virtuální člen základní třídy odvozené třídy můžete deklarovat člena jako uzavřené.To Neguje virtuální stran člen pro všechny další odvozené třídy.Toho dosáhnete uložením sealed klíčové slovo před potlačit klíčové slovo v deklaraci třídy člena.Příklad:

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

Viz také

Úkoly

Postup: definovat vlastnosti abstraktní (Příručka programování C#)

Referenční dokumentace

Třídy a struktur (Příručka programování C#)

Dědičnost (Příručka programování C#)

Metody (Příručka programování C#)

Pole (Příručka programování C#)

Koncepty

Příručka programování C#