![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
override, конечно.
HardCoder, написать, конечно, можно (extends не забыть только), но вот в данном примере super.method(); вызовется дважды. И ещё представьте, что в SomeClass есть куча методов типа func1. И в них захотелось вызывать новый method(); старый уже не тот. Захотел сделать свой дисплей лист с addChild, но везде super.addChild.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Цитата:
Цитата:
public class NewClass1 extends NewClass { public function func1():void { //вызываем метод суперкласса: super.method(); } public function func2():void { //вызываем переопределенный метод this.method(); } override public function method():void { trace("I am overriding my super class method"); super.method(); } } А, -De-! Вы наверное имеете в виду, что человек из-за невнимательности может поналепить везде super, не зная что на самом деле происходит? Тогда лучше от них отказаться... Добавлено через 14 минут Вернее не отказаться, а понять что это такое и где их нужно использовать, а где нет...
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 29.02.2012 в 01:15. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Цитата:
Цитата:
class ololo {//базовый, в нём есть некий метод public function lolo():void { trace("ololo"); } } class ololo2 extends ololo { public function lold():void {//есть куча методов, в куче наследников ololo, //которые вызывают super.lolo(); вместо просто lolo() super.lolo(); } } class ololo3 extends ololo2 {//потребовалось написать класс, где нужно везде //использовать новый метод lolo (и только в нём и его наследниках). public override function lolo():void { trace("ololo3"); } } Цитата:
Для super вполне есть обьяснения, почему надо его писать - "подчеркиваем, что это вызов именно метода базового класса". Просто есть вот и другие соображения. И я даже не претендую на то, что мои лучше. Просто нигде кроме как "тут" super всюду не лепят и я вот пытаюсь обьяснить, почему %)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Цитата:
Только вот не пойму кому может прийти в голову везде писать "super"... "this" я Теперь в коде мне нужно кое-что дописать: присвоить некоему свойству класса некое значение. А как свойство называется? А фиг его знает... Опять кручу колесико вверх к началу класса. Среди 50 строчек месива из асдоков и переменных ищу нужную мне и снова кручу вниз к месту редактирования кода. А если она не в этом классе, а в базовом? Зачем все это? Не проще написать: "this." и из подсказок выбрать нужную мне вещь. И когда таких случаев много, я начал задумываться: а не начать ли писать код как-то однотипно? Теперь, открыв один из своих старых классов, мне нужно лишь мельком взглянуть и я уже приблизительно вижу что происходит и кто с чем чего делает. this._prop - приватная или protected переменная или константа. this.prop - метод или свойство класса/суперкласса. prop - локальная переменная. Разве не удобочитаемо и красиво? Добавлено через 6 минут Цитата:
Ну, я пользуюсь FlashDevelop и при создании нового класса отмечаю "Generate constructor matching base class" уже не задумываясь, потому что очень часто именно этот super() в конструкторе был нужен.
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 29.02.2012 в 03:10. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Об этом, собственно, и речь – не надо писать super везде, где вызывается метод суперкласса.
UPD: Надо писать только тогда, когда метод суперкласса вызывается в функции, которая может быть переопределена, то есть во всех кроме приватных.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 29.02.2012 в 04:01. |
|
|||||
|
Я указываю и this и super.
Цитата:
__________________
местонахождение |
|
|||||
|
писать super нужно только тогда, когда это требуется, писать super, который и так срабатывает в пустом конструкторе считаю глупостью, а this для тех, кто не умеет нормально оформлять код и идей кроме как писать var a:int = 0 , func(a:int) this.a = a , не хватает. Обсуждение считаю глупым
__________________
Марк Tween |
|
|||||
|
Цитата:
Цитата:
__________________
Марк Tween |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:00. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|