Назад к вопросам
Middle
68
questionbank

Что такое абстрактный метод?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Это метод в абстрактном классе, который объявлен, но не имеет реализации. Он должен быть обязательно переопределен (реализован) в любом неабстрактном классе-наследнике.

Пример использования в Python с модулем abc:

from abc import ABC, abstractmethod

class Shape(ABC): // Абстрактный класс
    @abstractmethod
    def area(self): // Абстрактный метод
        pass

    @abstractmethod
    def perimeter(self): # Еще один абстрактный метод
        pass

class Circle(Shape): # Наследник абстрактного класса
    def __init__(self, radius):
        self.radius = radius

    def area(self): # Обязательная реализация area()
        return 3.14 * self.radius ** 2

    def perimeter(self): # Обязательная реализация perimeter()
        return 2 * 3.14 * self.radius

# Создание экземпляра абстрактного класса Shape невозможно:
# s = Shape() # Вызовет TypeError

Ключевые моменты:

  • Определяются с использованием декоратора @abstractmethod.
  • Находятся внутри абстрактных классов (классов-наследников ABC или с метаклассом ABCMeta).
  • Призваны обеспечить единообразие интерфейсов в иерархии классов.
  • Наличие абстрактного метода делает класс абстрактным, даже если он не наследует ABC.