AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 01.07.2003, 12:29   #1  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Антон Солдатов's Avatar
 
386 / 27 (1) +++
Join Date: 29.12.2002
Location: Новосибирск
Angry БАГА: Модификаторы методов
версия 3.0.
при попытке скомпилировать следующее:
PHP Code:
final static void noChange(){
   
info("ы!");

компилятор ругается: "Заданы конфликтующие модификаторы видимости", хотя я не понимаю, каким образом final и static конфликтуют между собой. да и в рук-ве разработчика есть аналогичный пример использования этих модификаторов. any ideas?
Old 01.07.2003, 14:01   #2  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Антон Солдатов's Avatar
 
386 / 27 (1) +++
Join Date: 29.12.2002
Location: Новосибирск
ЭПИЗОД II
это тоже не компилируется:

PHP Code:
public class Parent{
   public static 
void method1(){
       
Parent::method2();
   }

   static 
void method2(){ info("ы!"); }
   
}

public class 
Child extends Parent{
 
  static 
void method2(){ info("ку!"); }
 
  static 
void Main(Args args){
      
Child::method1();
   }

говорит нету такого метода!
то же мне ООП.
Old 01.07.2003, 18:15   #3  
fed is offline
fed
Moderator
fed's Avatar
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Join Date: 13.03.2002
Location: Hüfingen,DE
Я уже давненько не перечитывал ARM Страуструпа, но боюсь что в C++ тебя постигнет такая же неудача с этими конструкциями.

Модификатор final (его то как раз C++ нету, это из Java пришло) имеет смысл только для методов экземпляра, поскольку механизм "виртуализации" методов для статических методов не применим, так как они вызываются не в контексте экземпляра, соответственно у компилятора нет доступа к таблице виртуальных методов, привязываемой к экземпляру.

При вызове статического метода класса, нужно указывать именно тот класс в котором этот метод определен, то есть вызов child:arentMethod() не имеет смысла.
В дочерних классах наследуются только методы экземпляра (не статические).
Old 02.07.2003, 05:19   #4  
Антон Солдатов is offline
Антон Солдатов
Соучастник
Антон Солдатов's Avatar
 
386 / 27 (1) +++
Join Date: 29.12.2002
Location: Новосибирск
Quote:
Изначально опубликовано fed
Я уже давненько не перечитывал ARM Страуструпа, но боюсь что в C++ тебя постигнет такая же неудача с этими конструкциями.

Модификатор final (его то как раз C++ нету, это из Java пришло) имеет смысл только для методов экземпляра, поскольку механизм "виртуализации" методов для статических методов не применим, так как они вызываются не в контексте экземпляра, соответственно у компилятора нет доступа к таблице виртуальных методов, привязываемой к экземпляру.

При вызове статического метода класса, нужно указывать именно тот класс в котором этот метод определен, то есть вызов child:arentMethod() не имеет смысла.
В дочерних классах наследуются только методы экземпляра (не статические).
аргумент 1: несмотря на все Ваши слова, в Java статические методы наследуются, поэтому final имеет смысл.

аргумент 2: более того, final static void method_name - приводится в руководстве разработчика Axapta как правильный пример.
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Бага в сопоставлении «Максимальная переплата или недоплата». Starling DAX: Функционал 1 03.04.2009 17:16
Последовательность вызовов методов HorrR DAX: Программирование 3 10.04.2008 19:18
Бага во внешнем польском складе Андре DAX: Функционал 0 24.03.2008 10:14
Динамическое создание методов. Ratmir DAX: База знаний и проекты 19 18.08.2004 09:13
Исполнение методов класса на стороне сервера (AOS)? SnowMan DAX: Программирование 11 28.08.2003 16:15

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 10:21.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.