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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 29.02.2012, 17:09
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 41  
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от Zebestov Посмотреть сообщение
Нет, мне вообще не приходится выбирать (мне кажется я кэпствую, потому что именно это я и написал в своем комментарии)
Ненене, либо постоянно super, либо постоянно this, либо от балды писать, либо выбирать!
HardCoder, если (больше?) не нужно, чтоб вызывался новый, то вы неправильно написали новый. Можно его удалить или в нём вызвать старый.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 29.02.2012 в 17:13.
Старый 29.02.2012, 17:11
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 42  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Постоянно this, постоянно super. Срач неинтересен, объяснять лениво.

Старый 29.02.2012, 17:14
gait вне форума Посмотреть профиль Отправить личное сообщение для gait Найти все сообщения от gait
  № 43  
gait

Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
Цитата:
Сообщение от Zebestov Посмотреть сообщение
gait, твой пример не противоречит тому, что привел alatar, он просто не по теме
А почему не по теме? Просто я до сих пор не нашел очевидных плюсов использования this, если я пользуюсь венгерской нотацией в именовании переменных и доступ к ним делаю через геттеры/сеттеры.

Добавлено через 7 минут
UPD.
Цитата:
Сообщение от etc Посмотреть сообщение
Постоянно this, постоянно super. Срач неинтересен, объяснять лениво.
О, Денис! Твое мнение очень авторитетно для меня, очень прошу, объясни, пожалуйста! Я сегодня даже плохо спал, всё из головы не выходили эти this и super. Хотя бы вкратце, ну пожаалуйста...


Последний раз редактировалось gait; 29.02.2012 в 17:24.
Старый 29.02.2012, 17:25
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 44  
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от gait Посмотреть сообщение
А почему не по теме?
Потому что ты привел пример, в котором имена переменных просто разные.
__________________
Поймай яблоко 2!

Старый 29.02.2012, 17:34
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 45  
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от fljot Посмотреть сообщение
Зачем тогда переопределять? *вопрос ко всем любителям супер-ов*
Как зачем? Ну очевидно же: чтобы его использовать.
Код AS3:
public class A {		
	public function method():void {
		trace("I`m original method");
	}
}
Код AS3:
public class B extends A {		
	public function func1():void {
		this.method();
	}
}
Код AS3:
public class C extends B {		
	override public function method():void {
		trace("I`m overriden method");
	}
}
Код AS3:
var c:C = new C();
//мне необходимо вызвать старый метод, а выходит - наоборот
c.func1();//I`m overriden method
//мне необходимо вызвать новый метод, все работает как надо
c.method();//I`m overriden method
Не получается то чего я хочу добиться. Поэтому, мне в теле func1() нужно менять "this.method();" на "super.method();". Противники супер-ов, как по вашему мне добиться того, что я хочу, если в функции func1() НЕ писать super.method() ?
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 29.02.2012 в 17:41.
Старый 29.02.2012, 17:46
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 46  
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
О, Денис! Твое мнение очень авторитетно для меня, очень прошу, объясни, пожалуйста! Я сегодня даже плохо спал, всё из головы не выходили эти this и super. Хотя бы вкратце, ну пожаалуйста...
А чего тут объяснять? Есть понятие работаю много, работаю со всеми, сделать нужно качественно, максимально убрав логику - запороть . Для себя можно писать все , что угодно, работая же в команде this и super всегда, дабы не накосячить , хоть и процент 0.1
__________________
Марк Tween

Старый 29.02.2012, 17:47
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 47  
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Не переопределять метод. Создать B вместо C. Зачем их вообще переопределяют? =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 29.02.2012, 17:52
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 48  
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от HardCoder Посмотреть сообщение
//мне необходимо вызвать старый метод, а выходит - наоборот
c.func1();//I`m overriden method
Ну ведь это совершенно верно, для этого вы и переопределяли метод method().
Вмешиваетесь (переопределяете) — берёте на себя ответственность.

Вообще, как я вижу, красота этих обсуждений "чтобы работа класса не нарушилась, если кто-то что-то перепишет" рушится при переходе от A-B-C к A-B. В классе A мы не сможем писать super (потому что метод в нём же и определяем), значит переписанный метод в B приведёт к непоправимому. м?

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от fljot Посмотреть сообщение
Ну ведь это совершенно верно, для этого вы и переопределяли метод method().
Не для этого я его переопределил (см. ниже).
Цитата:
Сообщение от -De- Посмотреть сообщение
Не переопределять метод. Создать B вместо C. Зачем их вообще переопределяют? =)
А мне нельзя "не переопределять". Нужно позарез его переопределить!
Мне нужно создать спрайт-контейнер. В этот спрайт в дисплей-лист могу лишь добавлять воздушные шарики. Если добавлю что-то другое - полезет череда ошибок, поэтому я переопределяю addChild(). НО!!! Также этот контейнер обладает некой возможностью: добавлять какие-то определенные кнопки:
Код AS3:
public class A extends Sprite {
      public function addButton(y:Number):void {
            var button:SomeButton = new SomeButton();
            button.x = 87;
            button.y = y;
            super.addChild(button);
      }
}
Код AS3:
public class Container extends A {
      private var baloonsArray:Array = new Array();
 
      override public function addChild(child:DisplayObject):DisplayObject {
            if(!(child is Baloon)) {
                  throw new ArgumentError("I need only Baloons!!!!");
            }
            this.baloonsArray.push(child);
            return super.addChild(child);
      }
}
Код AS3:
var container:Container = new Container();
//добавляем новый шарик в контейнер
container.addChild(new Baloon());
//при желании добавляем кнопку
container.addButton(50);
По вашему в методе addButton я должен писать вместо super.addChild(button); - просто addChild(button); ?

Добавлено через 11 минут
Цитата:
Создать B вместо C
Ну, уберу я класс A. Метод addButton помещу в класс Container. И что это изменит? Все равно в методе addButton нужно писать "super".
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 29.02.2012 в 18:17.
Старый 29.02.2012, 18:21
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 50  
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Сообщение от HardCoder Посмотреть сообщение
Не для этого я его переопределил (см. ниже).А мне нельзя "не переопределять". Нужно позарез его переопределить!
Мне нужно создать спрайт-контейнер. В этот спрайт в дисплей-лист могу лишь добавлять воздушные шарики. Если добавлю что-то другое - полезет череда ошибок, поэтому я переопределяю addChild(). НО!!! Также этот контейнер обладает некой возможностью: добавлять какие-то определенные кнопки
Для контейнера создайте интерфейс и никто ваш нерабочий addChild не вызовет.:
Код AS3:
public interface IContainer {
  function addBaloon(baloon:Baloon):void;
  function addButton(button:Button):void;
}

Если метод принимает в качестве параметра экземпляр класса DisplayObject, то он должен принимать всех наследников DisplayObject, а не только Baloon. Заводите в заблуждение разработчиков, внутрь ваших публичных методов никто не обязан смотреть.

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 04:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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