Я пытаюсь понять, одинаков ли ответ на следующий вопрос на всех основных языках ООП; а если нет, то чем отличаются эти языки.
Предположим, у меня есть класс A
, который определяет методы act
и jump
; метод act
вызывает метод jump
. Подкласс B
A
переопределяет метод jump
(т. е. соответствующий синтаксис используется для гарантии того, что всякий раз, когда вызывается jump
, используется реализация класса B
).
У меня есть объект b
класса B
. Я хочу, чтобы он вел себя точно так же, как если бы он был класса A
. Другими словами, я хочу, чтобы jump
выполнялось с использованием реализации в A
. Какие у меня варианты на разных языках?
Например, могу ли я добиться этого с помощью какой-либо формы понижения? Или, возможно, создав прокси-объект, который знает, какие методы вызывать?
Я бы хотел избежать создания совершенно нового объекта класса A
и тщательной настройки совместного использования внутреннего состояния между a
и b
, потому что это явно не перспективно и сложно. Я также хотел бы избежать копирования состояния b
в совершенно новый объект класса A
, потому что может быть много данных для копирования.
ОБНОВИТЬ
Я задал этот вопрос конкретно о Python, но кажется, что этого невозможно добиться в Python, и технически это можно сделать... типа..
Похоже, что помимо технической осуществимости, есть веские аргументы против этого с точки зрения дизайна. Я спрашиваю об этом в отдельный вопрос.