abstract (Referenční dokumentace jazyka C#)
abstract Modifikátor znamená, že je věcí upravuje má chybějících nebo neúplných provádění.Lze použít modifikátor abstraktní třídy, metody, vlastnosti, indexování a události.Použití abstract modifikátor deklarace třídy označíte, že třída má pouze základní třídy z jiné třídy.Členy označeny jako abstraktní nebo součástí abstraktní třída musí implementovány třídami, které vyplývají z abstraktní třídy.
Příklad
V tomto příkladu třídy Square musí poskytnout implementace Area protože je odvozeno z ShapesClass:
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
public override int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
// Output: Area of the square = 144
Abstraktní třídy mají následující funkce:
Nelze vytvořit instanci abstraktní třídy.
Abstraktní třída může obsahovat abstraktní metody a přístupové objekty.
Není možné změnit abstraktní třída s sealed (Referenční dokumentace jazyka C#) modifikátor protože dvě modifers mají opačné význam.sealed Modifikátor zabrání dědí třídu a abstract modifikátor vyžaduje třída zdědit.
Než abstraktní třídy odvozené od abstraktní třída musí zahrnovat Skutečná implementace zděděné abstraktní metody a přístupové objekty.
Použití abstract modifikátor v deklaraci metody nebo vlastnosti označuje metodu nebo vlastnost neobsahuje implementaci.
Abstraktní metody mají následující funkce:
Abstraktní metoda je implicitně virtuální metody.
Abstraktní metoda prohlášení jsou povoleny pouze v abstraktních tříd.
Protože deklarace abstraktní metoda poskytuje žádná skutečná implementace, je tělo žádné metody; deklarace metody jednoduše končí středníkem a neexistují žádné složené závorky ({}) po podpisu.Příklad:
public abstract void MyMethod();
Provádění poskytuje metodu pro přepsáníoverride (Referenční dokumentace jazyka C#), který je členem jiné abstraktní třídy.
Je při použití statické nebo virtuální modifikátory v deklaraci abstraktní metody.
Abstraktní vlastnosti chovat jako abstraktní metody s výjimkou rozdíly v syntaxi prohlášení a vyvolání.
Je při použití abstract modifikátor v statickou vlastnost.
Abstraktní zděděná vlastnost lze přepsat v odvozené třídě včetně deklarace vlastnosti, které používá potlačit modifikátor.
Další informace o abstraktní třídy, viz Abstraktní a uzavřené třídy a jejich členové (Průvodce programováním v C#).
Abstraktní třída musí obsahovat implementaci pro všechny členy rozhraní.
Abstraktní třída, která implementuje rozhraní mohou mapovat metody rozhraní na abstraktní metody.Příklad:
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
V tomto příkladu třídy DerivedClass je odvozen z abstraktní třída BaseClass.Abstraktní třída obsahuje abstraktní metody, AbstractMethoda dvě abstraktní vlastnosti X a Y.
abstract class BaseClass // Abstract class
{
protected int _x = 100;
protected int _y = 150;
public abstract void AbstractMethod(); // Abstract method
public abstract int X { get; }
public abstract int Y { get; }
}
class DerivedClass : BaseClass
{
public override void AbstractMethod()
{
_x++;
_y++;
}
public override int X // overriding property
{
get
{
return _x + 10;
}
}
public override int Y // overriding property
{
get
{
return _y + 10;
}
}
static void Main()
{
DerivedClass o = new DerivedClass();
o.AbstractMethod();
Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
}
}
// Output: x = 111, y = 161
V předchozím příkladu, pokud se pokusíte vytvořit instanci abstraktní třídy pomocí příkazu, například takto:
BaseClass bc = new BaseClass(); // Error
zobrazí chyba oznamující, že kompilátor nelze vytvořit instanci abstraktní třídy 'BaseClass'.
Specifikace jazyka C#
Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
Modifikátory (Referenční dokumentace jazyka C#)
virtual (Referenční dokumentace jazyka C#)
override (Referenční dokumentace jazyka C#)