Абстракция— это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы.
Абстрактный класс в объектно-ориентированном программировании — это базовый класс, который не предполагает создания экземпляров через вызов конструктора напрямую, но экземпляр абстрактного класса создается неявно при построении экземпляра производного конкретного класса.
Ключевое слово abstract может использоваться с классами, методами, свойствами, индексаторами и событиями.
Возможности и ограничения абстрактных классов:
- Экземпляр абстрактного класса создать нельзя через вызов конструктора напрямую, но экземпляр абстрактного класса создается неявно при построении экземпляра производного конкретного класса.
- Абстрактные классы могут содержать как абстрактные, так и не абстрактные члены.
- Не абстрактный класс, являющийся производным, от абстрактного, должен содержать фактические реализации всех наследуемых абстрактных членов.
- Абстрактный метод является неявным виртуальным методом.
- Создание абстрактных методов допускается только в абстрактны классах.
- Тело абстрактного метода отсутствует, создание метода просто заканчивается двоеточием, а после сигнатуры ставить фигурные скобки ({}) не нужно
- Реализация предоставляется методом переопределения override, который является членом не абстрактного класса.
// Абстрактный класс.
abstract class AbstractClass
{
public abstract void Method();
}
// Конкретный класс.
class ConcreteClass : AbstractClass
{
public override void Method()
{
Console.WriteLine("Implementation");
}
}
class Program
{
static void Main()
{
AbstractClass instance = new ConcreteClass();
instance.Method();
// Delay.
Console.ReadKey();
}
}
