|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Цитата:
HardCoder, если (больше?) не нужно, чтоб вызывался новый, то вы неправильно написали новый. Можно его удалить или в нём вызвать старый.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. Последний раз редактировалось -De-; 29.02.2012 в 17:13. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Постоянно this, постоянно super. Срач неинтересен, объяснять лениво.
|
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Цитата:
Добавлено через 7 минут UPD. О, Денис! Твое мнение очень авторитетно для меня, очень прошу, объясни, пожалуйста! Я сегодня даже плохо спал, всё из головы не выходили эти this и super. Хотя бы вкратце, ну пожаалуйста... Последний раз редактировалось gait; 29.02.2012 в 17:24. |
|
|||||
Lorem ipsum
|
Потому что ты привел пример, в котором имена переменных просто разные.
__________________
Поймай яблоко 2! |
|
|||||
Как зачем? Ну очевидно же: чтобы его использовать.
public class C extends B { override public function method():void { trace("I`m overriden method"); } }
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 29.02.2012 в 17:41. |
|
|||||
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Не переопределять метод. Создать B вместо C. Зачем их вообще переопределяют? =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Цитата:
Вмешиваетесь (переопределяете) — берёте на себя ответственность. Вообще, как я вижу, красота этих обсуждений "чтобы работа класса не нарушилась, если кто-то что-то перепишет" рушится при переходе от A-B-C к A-B. В классе A мы не сможем писать super (потому что метод в нём же и определяем), значит переписанный метод в B приведёт к непоправимому. м? |
|
|||||
Цитата:
Цитата:
Мне нужно создать спрайт-контейнер. В этот спрайт в дисплей-лист могу лишь добавлять воздушные шарики. Если добавлю что-то другое - полезет череда ошибок, поэтому я переопределяю addChild(). НО!!! Также этот контейнер обладает некой возможностью: добавлять какие-то определенные кнопки: 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); } } 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); } } var container:Container = new Container(); //добавляем новый шарик в контейнер container.addChild(new Baloon()); //при желании добавляем кнопку container.addButton(50); Добавлено через 11 минут Цитата:
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 29.02.2012 в 18:17. |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Цитата:
public interface IContainer { function addBaloon(baloon:Baloon):void; function addButton(button:Button):void; } Если метод принимает в качестве параметра экземпляр класса DisplayObject, то он должен принимать всех наследников DisplayObject, а не только Baloon. Заводите в заблуждение разработчиков, внутрь ваших публичных методов никто не обязан смотреть. |
Часовой пояс GMT +4, время: 04:06. |
|
« Предыдущая тема | Следующая тема » |
|
|