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