Абстрактный класс
Класс с модификатором abstract нельзя
инстанцировать через new. В нём допускаются
абстрактные методы и свойства - без тела, их
реализуют в производных классах. Обычные члены
абстрактного класса наследуются как в обычном
class.
Синтаксис
abstract class Имя
{
public abstract int Метод();
}
Пример
Давайте реализуем абстрактный метод в производном классе:
using System;
abstract class Shape
{
public abstract int Area();
}
class Square : Shape
{
public int Side;
public override int Area()
{
return Side * Side;
}
}
class Program
{
static void Main()
{
Shape shape = new Square { Side = 3 };
Console.WriteLine(shape.Area());
}
}
Результат выполнения кода:
9
Пример
Давайте вызовем обычный метод базового абстрактного класса:
using System;
abstract class Logger
{
public void Log(string text)
{
Console.WriteLine(text);
}
}
class FileLogger : Logger { }
class Program
{
static void Main()
{
var logger = new FileLogger();
logger.Log("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте хранить производный объект в переменной базового типа:
using System;
abstract class Animal
{
public abstract string Name();
}
class Cat : Animal
{
public override string Name()
{
return "cat";
}
}
class Program
{
static void Main()
{
Animal pet = new Cat();
Console.WriteLine(pet.Name());
}
}
Результат выполнения кода:
"cat"