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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.07.2007, 14:13   #1  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
? abstract классы и методы
подскажите пожалуйста, для чего в Аксе введены abstract классы и методы.

Чем вызов метода
abstract protected boolean check()
отличается от метода
protected boolean check()

Спасибо.
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
Старый 24.07.2007, 14:19   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,738 / 404 (17) +++++++
Регистрация: 23.03.2006
если в кратце, то abstract означает, что чтобы его использовать его обязательно нужно перекрыть
Старый 24.07.2007, 14:19   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от zZ_TOP_Zz Посмотреть сообщение
abstract protected boolean check()
такой метод нельзя вызвать. Ядро выдаст ошибку.
можно вызвать только его небастрактынх потомков.

Только учтите, что в 2.5 ключевое слово abstract ввели, но оно не действовало.
В 3.0 в некоторых релизах были ошибки с этим ключевым словом (оно не действовало).
__________________
полезное на axForum, github, vk, coub.
Старый 24.07.2007, 14:27   #4  
zZ_TOP_Zz is offline
zZ_TOP_Zz
int 20h
Аватар для zZ_TOP_Zz
 
143 / 24 (1) +++
Регистрация: 26.02.2007
Адрес: Санкт -Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
такой метод нельзя вызвать. Ядро выдаст ошибку.
можно вызвать только его небастрактынх потомков.

Только учтите, что в 2.5 ключевое слово abstract ввели, но оно не действовало.
В 3.0 в некоторых релизах были ошибки с этим ключевым словом (оно не действовало).
С этим то я как раз и столкнулся... есть класс объявленный как abstract.
после компилляции компилятор выдает сообщение об ошибке Нельзя создать объект, поскольку абстрактный метод BookDataCalc_RU.check() не реализован.Заходя в этот метод я вижу что он объявлен как abstact protected boolean check() , вот я и задумался для чего его так объявили...(кстати сам метод пустой и никаких проверок не делает). Странно как то.
__________________
It's just my Unhopelessnessabilityerism
Trying to debug my mind
Старый 24.07.2007, 14:37   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от zZ_TOP_Zz Посмотреть сообщение
вот я и задумался для чего его так объявили...
Для потомков.
Считайте, что объявили интерфейс.
Все методы в Аксапте "знают", что у этого семейства классов есть метод check().
Что у этого метода нет параметров, а возвращает он вот это.

Поскольку метод объявлен как abstract, то все методы знают, что напрямую объект этого базового класса создавать нельзя, и вызывать метод базового класса тоже нельзя. Можно вызывать только потомков (кстати, а они вызывать метод базового класса могут через super).

Думаю, что стоит почитать книжки по ООП.
Это стандартная методика работы в объектно-ориентированной парадигме.
__________________
полезное на axForum, github, vk, coub.
Старый 24.07.2007, 14:42   #6  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Класс с модификатором Abstract или abstract метод действуют противоположно по отношению к действию модификатора final. Использование abstract класса - это планирование наследования и последующее создание класса наследника. Отдельно метод в классе не может быть объявлен как abstract. Это используется в стандартной конфигурации для родительских (super) классов для запрета ошибочного объявления объекта родительского класса. Класс SalesFromLetter использует эту методику
Теги
ax2.5, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Методы таблицы в DataSources (DAX4) Qaz Qwerty DAX: Программирование 2 16.06.2008 10:11
Найти display методы MrVisual DAX: Программирование 12 15.05.2007 09:53
axcoder: Dynamic analog of abstract macro Blog bot DAX Blogs 0 26.01.2007 17:50
axcoder: Abstract macro Blog bot DAX Blogs 0 26.01.2007 05:45
display-методы в группах Damn DAX: Программирование 2 15.02.2004 23:27
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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