Показать сообщение отдельно
Старый 07.11.2018, 18:30   #3  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
?
Цитата:
Сообщение от wojzeh Посмотреть сообщение
Wrapping a base method in an extension of a derived class
The following example shows how to wrap a base method in an extension of a derived class. For this example, the following class hierarchy is used:
Здравствуйте, wojzeh. Спасибо за ответ. У меня немного другая ситуация: у меня нет COC, но есть extension для базового класса и extension для наследника. Если переменная объявлена как базовый класс, но в realTime инициализируется как наследник, то extension все равно вызывается для базового класса.
(Thank you for your answer. I have the different case: I havn't COC. I have extensions for parent class and for a child. Both extensions has the same method. A class variable declared as a parent class, but initialized as a child. The system invokes extension for the parent class)
X++:
class A
{
}
class B extends A
{
}
[ExtensionOf(classStr(A))]
final class A_Extension
{
    public void salute()
    {
        info("A extension");
    }

}
[ExtensionOf(classStr(B))]
final class B_Extension
{
    public void salute()
    {
        info("B extension");
    }

}
X++:
class Test01
{        
    public static void main(Args _args)
    {    
        A a;

        a = new B(); 

        a.salute();
    }

}
В результате получим "A extension".
За это сообщение автора поблагодарили: Logger (5), Pokersky09 (2).