![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
воооот... тогда какой смысл в первоначальном super, если он в первом случае гарантирует, а во втором нет? - пробой логики конструкции
__________________
скриптограф |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Вот у меня зато вопрос возник. Разве нельзя использовать super в классе, который не наследуется ни отчего (или extends Object)? Вот примерчик, который выдает рантайм ошибку. Может что неправильно делаю? var _b:ClassB = new ClassB(); trace( "_b.methodA(): " + _b.methodA() ); trace( "_b.methodB(): " + _b.methodB() ); trace( "_b.methodC(): " + _b.methodC() ); trace( "_b.methodD(): " + _b.methodD() ); package { public class ClassA //extends Object { public function ClassA() { //super(); } public function methodA():String { return "ClassA::methodA()"; } public function methodB():String { return methodA(); } public function methodC():String { return this.methodA(); } public function methodD():String { return super.methodA(); } } } package { public class ClassB extends ClassA { public function ClassB() { super(); } override public function methodA():String { return "ClassB::methodA()"; } } } Цитата:
Последний раз редактировалось i.o.; 07.05.2010 в 02:14. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
Ты что-то не так понял. |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Что-то совсем не в ту степь тема пошла
... Подсознательно первый вариант кажется лучше. Про второй просто не думал до этого топика (хотя, все логично) - это касаемо изначального смысла топика... |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
какой метод вызовется, если мы используем super.a( ) в методе b( ) корневого суперкласса и этот метод b( ) вызывается из экземпляра класса, который наследуется от корневого через один класс (и методы а( ) в расширениях переопределяются в каждом наследуемом классе)?
Добавлено через 15 минут ааа... дошло вроде, про что топик - ну и тормоз)))) Цитата:
Первый вариант приятней в том смысле, что логика происходящего лучше читается
__________________
скриптограф |
|
|||||
|
Lorem ipsum
|
Цитата:
![]()
__________________
Поймай яблоко 2! |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В начале чего?
|
|
|||||
|
В самой начале цепочки наследования, т.е. насколько я понял i.o. хочет чтобы метод, не найденный наверху искался снизу. По мне и слава богу, что не ищется.
orcpochta, вопрос вообще не понял. По дефолту, если мы не пишем this или super поиск идёт среди локальных переменных. Не нашли? Поднимаемся выше. Ищем в полях класса. Не нашли? Идём в суперкласс. И там не нашли? Идём в суперкласс суперкласса. Когда пишем this или super мы уже фактически однозначно говорим, какой метод из многих потенциальных мы хотим вызвать. Я лично super пишу, this не пишу - у меня очень редко совпадают имена локальных переменных с именами полей класса. Почему пишу super? Потому что, например, в классе унаследованном от Sprite`а мне вдруг захочется перекрыть нафиг сеттеры x и y. Зачем - не знаю, как пример говорю. Перекрываю я их - и надо переписывать весь класс под super.x и super.y. Поэтому пишу сразу - я ведь однозначно знаю, что в этой задаче мне нужен будет именно тот x, который определен в Sprite.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Psycho Tiger, это все понятно, но до сих пор не понимаю этих слов udaaff-а
Цитата:
__________________
скриптограф |
|
|||||
|
Создай класс A. Определи в нём метод method и метод callMethod, вызывающий method.
Создай класс B extends A. Переопредели в нём method и позови callMethod.
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:35. |
|
|
« Предыдущая тема | Следующая тема » |
|
|