Junior
128
questionbank
Каковы различия между абстрактными и обычными методами в C#?
Answer from AI
sobes.tech AI
Абстрактные методы не имеют реализации и должны быть переопределены в производном классе. Обычные методы имеют полную реализацию в базовом классе и могут быть переопределены, но не обязательно.
Основные отличия:
- Реализация: Абстрактные методы не имеют тела, обычные — имеют.
- Наличие ключевого слова
abstract: Абстрактные методы объявляются с ключевым словомabstract, обычные — без него. - Расположение: Абстрактные методы могут быть объявлены только в абстрактных классах. Обычные методы могут быть в любых классах.
- Переопределение: Абстрактные методы должны быть переопределены в неабстрактных производных классах. Обычные методы могут быть переопределены, если объявлены с ключевым словом
virtual,abstractилиoverride. - Доступ: Абстрактные методы не могут быть приватными (
private). Обычные методы могут иметь любой модификатор доступа.
Пример абстрактного метода:
// Объявление абстрактного класса
public abstract class Shape
{
// Объявление абстрактного метода без реализации
public abstract double GetArea();
}
Пример обычного метода:
// Обычный класс
public class Circle : Shape
{
public double Radius { get; set; }
// Переопределение абстрактного метода
public override double GetArea()
{
return Math.PI * Radius * Radius;
}
// Обычный метод с реализацией
public void DisplayInfo()
{
Console.WriteLine($"Circle with radius: {Radius}");
}
}