Klasy abstrakcyjne i zamkniętych i elementy klas (Podręcznik programowania C#)
Abstrakcyjna słowa kluczowego umożliwia tworzenie klas i klasy członków, które są niekompletne i musi być zaimplementowana w klasie pochodnej.
Zamkniętych słów kluczowych pozwala zapobiegać dziedziczeniu klasy lub niektórych członków klasy, które uprzednio zostały oznaczone jako wirtualnego.
Klasy abstrakcyjne i elementy klas
Klasy mogą być deklarowane jako abstrakcyjna poprzez wprowadzenie słowa kluczowego abstract przed definicji klasy.Na przykład:
public abstract class A
{
// Class members here.
}
Nie można utworzyć wystąpienia klasy abstrakcyjnej.Celem klasy abstrakcyjnej jest zapewnienie wspólnej definicji klasy podstawowej, które mogą udostępniać wiele klas pochodnych.Na przykład biblioteka klas mogą zdefiniować klasa abstrakcyjna, która jest używana jako parametr do wielu jego funkcji i wymagają programistów, zapewnienie realizacji klasy tworząc klasie pochodnej przy użyciu biblioteki.
Klasy abstrakcyjne także mogą definiować metody abstrakcyjne.Można to osiągnąć przez dodanie słów kluczowych abstract przed zwracany typ metody.Na przykład:
public abstract class A
{
public abstract void DoWork(int i);
}
Metody abstrakcyjne mają implementacja nie tak definicja metody następuje średnik zamiast bloku normalne metody.Klasa abstrakcyjna klas pochodnych musi implementować wszystkie metody abstrakcyjne.Podczas abstrakcyjna klasa dziedziczy wirtualnego metody klasy podstawowej, klasa abstrakcyjna można zastąpić metodę wirtualnego z metoda abstrakcyjna.Na przykład:
// 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.
}
}
Jeśli virtual metoda jest zadeklarowany jako abstract, jest nadal wirtualnych, aby każda klasa dziedziczy z klasy abstrakcyjnej.Klasy, dziedziczenie metoda abstrakcyjna nie może uzyskać dostępu do oryginalnej implementacji metody – w poprzednim przykładzie, DoWork dla klasy nie można wywołać f DoWork na klasy D.W ten sposób klasa abstrakcyjna można wymusić klas pochodnych, aby podać nowe implementacje metod dla metod wirtualnych.
Klasy zapieczętowane i elementy klas
Klasy mogą być deklarowane jako zamkniętych przez wprowadzenie słowa kluczowego sealed przed definicji klasy.Na przykład:
public sealed class D
{
// Class members here.
}
Klasy zapieczętowanej nie można użyć jako klasa podstawowa.Z tego powodu nie może być również klasy abstrakcyjnej.Klasy zapieczętowane zapobiec wyprowadzenie.Ponieważ mogą one nigdy używane jako klasa podstawowa, niektóre optymalizacje run-time można wprowadzać nieznacznie szybciej wywołującego członkowie klasy zapieczętowanej.
Członek klasy, metody, pole, właściwości lub zdarzenia na klasie pochodnej, która jest przesłanianie wirtualnego członek klasy podstawowej można zadeklarować tego członka jako sealed.Negacja to wirtualny aspekt elementu członkowskiego dla jakichkolwiek dalszych pochodna klasy.Można to osiągnąć poprzez wprowadzenie sealed słowa kluczowego przed zastąpić słowa kluczowego w deklaracji członka klasy.Na przykład:
public class D : C
{
public sealed override void DoWork() { }
}
Zobacz też
Zadania
Jak: Definiowanie właściwości (Podręcznik programowania C#)
Informacje
Klasy i strukturach (Podręcznik programowania C#)
Dziedziczenie (Podręcznik programowania C#)
Metody (Podręcznik programowania C#)
Pola (Podręcznik programowania C#)