Опитвам се да разбера дали отговорът на следния въпрос е един и същ на всички основни ООП езици; и ако не, тогава как се различават тези езици.
Да предположим, че имам клас A
, който дефинира методи act
и jump
; метод act
извиква метод jump
. Подкласът B
на A
отменя метод jump
(т.е. използва се подходящият синтаксис, за да се гарантира, че когато се извиква jump
, се използва имплементацията в клас B
).
Имам обект b
от клас B
. Искам да се държи точно така, сякаш е от клас A
. С други думи, искам jump
да се изпълни с помощта на имплементацията в A
. Какви са моите възможности на различни езици?
Например, мога ли да постигна това с някаква форма на понижаване? Или може би чрез създаване на прокси обект, който знае кои методи да извика?
Бих искал да избегна създаването на съвсем нов обект от клас A
и внимателното настройване на споделянето на вътрешно състояние между a
и b
, защото това очевидно не е устойчиво на бъдещето и е сложно. Също така бих искал да избегна копирането на състоянието на b
в чисто нов обект от клас A
, защото може да има много данни за копиране.
АКТУАЛИЗИРАНЕ
Зададох този въпрос конкретно за Python, но изглежда, че това е невъзможно да се постигне в Python и технически може да се направи... донякъде..
Изглежда, че освен техническата осъществимост, има силен аргумент срещу това от гледна точка на дизайна. Питам за това в отделен въпрос.