Geniepro писал(а):
Есть разные взгляды на реализацию полиморфизма.
В хаскелле, например, есть классы типов, и функция сортировки списков, например, будет сортировать списки со значениями любых типов, для которых реализован интерфейс класса Ord, в котором определены операции сравнения больше-меньше.
И тут делегаты получаются ненужными -- в типе функции закодировано требование, что элементы сортируемого списка должны иметь операцию сравнения.
Просто и безопасно, со статической проверкой.
При таком подходе, кстати, и расширение-наследование вообще становится ненужным. Остаётся одна композиция: скомпоновали класс как реализацию нескольких интерфейсов. А интерфейсам расширяться тоже не нужно, просто вводим дополняющие интерфейсы. Как это был в COM, кстати.
Такой подход очень неплох для прикладного уровня, уже надязыкового (уровень хранимых объектов ИС и т.п.).
Ну а в языке лучше всё-таки маневрировать на уровне Оберона - все механизмы ООП по отдельности.