Я увлечен возможностями красивого кода с расширением протокола . Но я, кажется, не понимаю реальной разницы между наследованием класса.Преимущества наследования классов, когда вы можете использовать расширения протокола?
Я знаю, что есть разные способы моделирования чего-то, например, я мог бы использовать композицию вместо наследования класса.
Но тогда я знал особенности наследования классов, заключался в том, что подкласс мог легко использовать реализации суперкласса. С расширением протокола у меня тоже есть эта функция, даже для типов значений.
Итак, вопрос в том, какие функции имеют наследование классов, какие расширения протокола нет; или когда использовать наследование классов вместо расширений протокола.
Это не прямой ответ, а скорее теоретический, но я где-то где-то красный, что вы должны использовать наследование класса, когда подкласс *** IS *** является экземпляром суперкласса и использует протоколы всякий раз, когда ваш класс ** * HAS *** свойства протокола. –
Это больше похоже на разницу между наследованием и композицией. – Binarian