Back to questions
Junior — Middle
61
Какие основные отличия существуют между абстрактным и конкретным классами в объектно-ориентированном программировании?
Answer from AI
sobes.tech AI
Абстрактный класс — это класс, который не может быть инстанцирован напрямую и предназначен для служения базой для других классов. Он может содержать абстрактные методы (без реализации), которые должны быть реализованы в наследниках.
Конкретный класс — это класс, который можно создавать как объекты, и он содержит полную реализацию всех своих методов.
Основные отличия:
- Инстанцирование: Абстрактный класс нельзя создать напрямую, конкретный — можно.
- Методы: Абстрактный класс может содержать абстрактные методы без реализации, конкретный класс — все методы реализованы.
- Назначение: Абстрактный класс задаёт общий интерфейс и поведение для наследников, конкретный класс реализует конкретную логику.
Пример на C#:
abstract class Animal
{
public abstract void MakeSound(); // абстрактный метод
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
// Animal a = new Animal(); // Ошибка
Dog dog = new Dog();
dog.MakeSound(); // Выведет Bark