Встречается на собеседованиях • сегодня

В чем разница между абстрактным класом и интерфейсом

Основные различия между интерфейсом и абстрактным классом в Python:

  1. Назначение:
  • Интерфейс определяет только сигнатуры методов (что делать)
  • Абстрактный класс может содержать реализацию (как делать)
  1. Реализация:
  • В Python интерфейсы реализуются через ABC (Abstract Base Classes) с @abstractmethod
  • Абстрактный класс может содержать как абстрактные, так и обычные методы
  1. Наследование:
  • Класс может реализовывать несколько интерфейсов
  • Класс может наследоваться только от одного абстрактного класса

Пример:

python
from abc import ABC, abstractmethod

# Интерфейс
class Flyable(ABC):
    @abstractmethod
    def fly(self):
        pass

# Абстрактный класс
class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass
        
    def sleep(self):
        print("Zzz...")

# Реализация
class Bird(Animal, Flyable):
    def make_sound(self):
        print("Chirp!")
        
    def fly(self):
        print("Flying high")
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы