AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2004, 11:42   #1  
Filip is offline
Filip
Участник
 
82 / 10 (1) +
Регистрация: 19.02.2004
Методы детей и родителей
Объясните, пожалуйста механизм использования this в Axapt-е.
Уже пару раз приходилось сталкиваться, что на строке this.<метод> по кнопке F8 попадаешь в одноименный метод child-а.
Например, в методе класса RAssetProposal.run() есть вызов this.createJournalLines(…).
Реально вызывается метод RAssetProposalDepreciationBudget.createJournalLines(…) дочернего класса.
Почему так происходит? Мне с this приходилось только в С++ сталкиваться.
Старый 29.07.2004, 11:52   #2  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
this - это ссылка на экземляр класса (объект). В твоем случае объект был проинициализирован как экземпляр класса-потомка. Метод run() в нем не перекрыт и соответственно вызывается метод родительского класса, а метод createJournalLines() перекрыт.
Старый 29.07.2004, 12:08   #3  
Zan is offline
Zan
Участник
 
104 / 25 (1) +++
Регистрация: 22.07.2004
Адрес: I live in Moscow
Вот еще небольшая выдержка из документации.

Кроме this есть еще Element, обязательно столкнетесь

........Element resembles the this operator. A report consists of several objects. The this operator can be used to open an object's methods inside that same object. Likewise, the Element operator is used to open methods within an entire report, even if the report consists of a collection of objects. You can use the Elementoperator in reports and forms.......

2 dn в случае с RAssetProposal наоборот метод run() перекрыт, а вот createJournalLines(…) не перекрыт...
Старый 29.07.2004, 12:27   #4  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Изначально опубликовано Zan
2 dn в случае с RAssetProposal наоборот метод run() перекрыт, а вот createJournalLines(…) не перекрыт...
На самом деле как оказалось перекрыты они оба. Только метод run дочернего класса через super() вызывает метод родительского, в котором в свою очередь идет вызов createJournalLines() снова дочернего класса.
Конструкция element к классам не относится, она используется в формах и отчетах.
Старый 29.07.2004, 12:34   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Методы детей и родителей
Цитата:
Изначально опубликовано Filip
Почему так происходит? Мне с this приходилось только в С++ сталкиваться.
Потому что в java все функции являются виртуальными.
Представьте, что у всех методов есть модификатор virtual
Старый 29.07.2004, 14:53   #6  
Filip is offline
Filip
Участник
 
82 / 10 (1) +
Регистрация: 19.02.2004
Цитата:
Изначально опубликовано dn
В твоем случае объект был проинициализирован как экземпляр класса-потомка.
При нажатии кнопки Амортизация в форме Документ ГК журнала бюджетов ОС отрабатывается класс RAssetProposal...... Это родитель.
Старый 29.07.2004, 15:12   #7  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Изначально опубликовано Filip

При нажатии кнопки Амортизация в форме Документ ГК журнала бюджетов ОС отрабатывается класс RAssetProposal...... Это родитель.
Ну и посмотри на нем статический метод construct()...
Старый 29.07.2004, 15:16   #8  
simply is offline
simply
Участник
 
84 / 10 (1) +
Регистрация: 24.05.2004
Адрес: москва
Re: Re: Методы детей и родителей
Цитата:
Изначально опубликовано mazzy

Потому что в java все функции являются виртуальными.
Представьте, что у всех методов есть модификатор virtual
ну почему же только в C++ ... что бы не быть голословным советую обратиться к

"Спецификация языка Ява"
Джеймс Гослинг
Билл Джой
Гай Стил

она просто напичкана фразами типа:
"В выражениях инициализации переменных экземпляров разрешаются ссылки на текущий объект this (§15.7.2) и использование ключевого слова super (§15.10.2, §15.11)." )))
.
Старый 29.07.2004, 16:52   #9  
Filip is offline
Filip
Участник
 
82 / 10 (1) +
Регистрация: 19.02.2004
Цитата:
Изначально опубликовано dn

Ну и посмотри на нем статический метод construct()...
ОК, спасибо, теперь все понятно
Теги
x++

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Методы таблицы в DataSources (DAX4) Qaz Qwerty DAX: Программирование 2 16.06.2008 10:11
Найти display методы MrVisual DAX: Программирование 12 15.05.2007 09:53
Слетают методы на полях в датасорсе... как бороться? soin DAX: Программирование 6 17.01.2005 15:53
display-методы в группах Damn DAX: Программирование 2 15.02.2004 23:27
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:21.