Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.03.2010, 23:52
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
По умолчанию Использование super

С точки зрение тру-флешеризма нужно писать
Код AS3:
super.superClassMethod()
верно?
Интересует 2 вещи:
1) А если у меня цепочка:
Class1 extends Class2 extends Class3
чтобы в Class1 вызвать методы Class3 по логике super`а нужно писать super.super.method3(), только вот так нельзя - ругается. Тогда пишем как - super.method3() или даже просто method3()?

2) Ситуация:
Код AS3:
if (autoConnect) addEventListener(UserToUser.READY_EVENT, onModuleReady);
super(param, autoConnect);
Класс наследуется от класса, который наследуется от EventDispatcher`а. Правильней нужно поставить super.addEventListener, однако нельзя вызвать после использования super ещё и конструктор суперкласса - что делать?

Старый 04.03.2010, 00:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1) Вызываем method3 класса Class2, который в свою очередь вызывает method3 у Class3. Всё через super.
2) Если оно асинхронное, то нафига что-то втыкать до вызова супер-конструктора?

Старый 04.03.2010, 00:14
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Вообще, в конструкторе лучше либо ничего не писать, либо самый минимум. Конструктор - это самая медленная функция в классе изза того, что каждый раз она по-новому прочитывается (остальные функции раз скомпилировали JIT'oм и используем готовые). Да и ограничения на порядок вызова тоже не самое лучшее - вобщем, если в конструкторе нужна какая-то логика, легче ее всю завернуть в отдельную функцию и вызвать из конструктора чем потом сталкиваться с подобного рода проблемами.
__________________
Hell is the possibility of sanity

Старый 04.03.2010, 00:40
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
1) Вызываем method3 класса Class2, который в свою очередь вызывает method3 у Class3. Всё через super.
Звучит как будто надо оверрайдить в Class2 методы его суперкласса.
Я так понимаю что просто если метод в этом классе, то this.thisClassMethod(), а если в суперклассе или "выше" - то super.mySuperClassMethod()?
Уже кстати понимаю сторонников писать this везде, где нужно)
Кстати, про this - я пишу this.myMethod() или this.myPole - если это члены класса, а если это локальные переменные в методе писать this не нужно, верно?

Цитата:
2) Если оно асинхронное, то нафига что-то втыкать до вызова супер-конструктора?
В целом верно, просто когда увидел этот кусок задумался - а что если событие UserToUser.READY_EVENT может диспатчится в конструкторе? Конечно, если делать как скзаал wvxvw проблемы нет - но уже интересно просто с точки зрения правильности - без super ведь работает.

Старый 04.03.2010, 02:39
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
super в методах нужно писать там где необходимо, имхо. Так же как и this. В конструкторе всегда.
Цитата:
а если это локальные переменные в методе писать this не нужно, верно?
Проще попробовать, чем спросить Естественно не нужно.
Цитата:
Уже кстати понимаю сторонников писать this везде, где нужно)
Везде, где нужно, или везде где только можно?
Никогда не понимал сторонников загромождения своего кода различными ненужностями, которые якобы улучшают читаемость и понятность.

Старый 04.03.2010, 08:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
если это локальные переменные в методе писать this не нужно, верно?
А что, получилось написать this?

Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
В целом верно, просто когда увидел этот кусок задумался - а что если событие UserToUser.READY_EVENT может диспатчится в конструкторе? Конечно, если делать как скзаал wvxvw проблемы нет - но уже интересно просто с точки зрения правильности - без super ведь работает.
И кому оно отправляется в конструкторе, мм?

Старый 04.03.2010, 09:49
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
Везде, где нужно, или везде где только можно?
Никогда не понимал сторонников загромождения своего кода различными ненужностями, которые якобы улучшают читаемость и понятность.
Везде, где нужно) Раньше переменную myVar обзывал по 3 раза - myVar, myVariable, variable (к примеру) - разные переменные для суперкласса, поля этого класса и локального класса. Сейчас часто такие пересечения и везде указываю область видимости - кайф )
Цитата:
Никогда не понимал сторонников загромождения своего кода различными ненужностями, которые якобы улучшают читаемость и понятность.
Насчёт this везде ещё соглашусь, однако с точки зрения ООП super всё таки при вызове методов суперкласса писать нужно. Байткод разный получается, так что... лучше переучиваться
Цитата:
А что, получилось написать this?
Цитата:
Проще попробовать, чем спросить Естественно не нужно.
Да, не пробовал, каюсь) Я пока ещё this не пишу везде и вся, наверное, если бы начал - вопроса бы не было) спасибо

Цитата:
И кому оно отправляется в конструкторе, мм?
Хах, верно) Хотя, можно же отправлять его чтобы как раз потомки подловили - но пахнет маразмом уже - проще метод пустой объявить и его оверрайдить.
Просто забавно, что код "идеологически" неверный работает, а идилогически верный - нет

Дак что с методами суперкласса суперкласса? Просто super.myMethod() ?

Старый 04.03.2010, 09:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Просто super.myMethod() ?
Ну само собой.

Старый 06.04.2010, 12:07
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Кстати, в коде далеко не глупых ребят всё чаще встречаю
Код AS3:
this.addEventListener(...);
без override`а addEventListener`а.
Сам я с некоторых пор этой темы пишу
Код AS3:
super.addEventListener
Да и вообще, любое свойство и метод определенный в базовом классе пишу через super.
Как правильно?

Ещё заметил, что mxmlc не хочет компилировать конструкцию
Код AS3:
super.x+=10;
Однако,
Код AS3:
x+=10;
компилируется. У меня бета, из за этого или есть какая-то фишка?

Старый 06.04.2010, 12:43
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
super для методов а не свойств.
__________________
Отряд Котовскага

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.