06.07.2006, 14:26 | #1 |
Участник
|
Вызов родительского метода произвольного уровня
Как в методе-потомке вызвать метод-предок, но не непосредственный (super), а выше по иераррхии (например через одного).
В C++, например, это можно сделать так: класс_предок::метод А в аксапте я даже не догадываюсь... а как на яве? Может также. Это понадобилось, когда в наследнике стало необходимо "перепрыгнуть" через один validate. |
|
06.07.2006, 14:31 | #2 |
NavAx
|
полностью переопределить :-)
|
|
06.07.2006, 14:54 | #3 |
Модератор
|
Или написать на родителе метод, возвращающий родитель предыдущего уровня.
С Уважением, Георгий |
|
06.07.2006, 15:04 | #4 |
Участник
|
Надеялся, что это можно сделать средствами языка. Интересно стало. Значит нет.
Хотя обходной путь с созданием метода на родителе подошел бы как вариант. В моем же случае оказалось проще отнаследоваться от нужно мне класса, а не его наследника. |
|
06.07.2006, 15:34 | #5 |
Модератор
|
А что есть использовать что-то вроде args().caller().caller() ?
Насколько я понимаю, Вы раньше С++ занимались? Хм. Ну, в принципе, тогда быстро разберетесь И еще: одно мааленькое отличие: в Х++ нет множественного наследования - только от 1го класса. Удачи! С Уважением, Георгий |
|
06.07.2006, 15:41 | #6 |
Участник
|
вызывать деда концептуально неверно, т.к. получается что код потомка зависит от того, как вы классифицируете предков.
чем-то напоминает goto. |
|
06.07.2006, 16:35 | #7 |
Британский учённый
|
Цитата:
Сообщение от belugin
вызывать деда концептуально неверно, т.к. получается что код потомка зависит от того, как вы классифицируете предков.
чем-то напоминает goto. Лучше писать методы на родителе и вызывать их. Хоть в БП ничего по этому поводу и несказанно, но в стандартном функционале делают через методы. |
|
06.07.2006, 16:58 | #8 |
Участник
|
Кроме ограничения на типизацию объектов в Axapte и, как следствие невозможность вызывать методы предка-предка, есть еще одно, на мой взгляд, более существенное ограничение.
В Ахарте нельзя вызвать ПРОИЗВОЛЬНЫЙ метод предка при создании метода в наследнике. Можно вызвать только ПЕРЕКРЫВАЕМЫЙ метод предка - super(). Все остальные методы вызываются только с использованием свойства полиморфизма - следовательно только методы самого наследника, а потом уже из них методы предка... |
|
07.07.2006, 09:40 | #9 |
Участник
|
Цитата:
Сообщение от leva
Это понадобилось, когда в наследнике стало необходимо "перепрыгнуть" через один validate.
И Ваш родитель и наследник должны быть братьями. |
|