|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2012
Адрес: Crimea
Сообщений: 31
|
super нужен для вызова метода в родителе, который переопределяется в наследнике. Иными словами BaseEnemy.hurt()->AngryEnemy.hurt()->EvilEnemy.hurt(). В классе BseEnemy hurt пустой (чуть позже почему он там нужен). AngryEnemy имеет свой метод hurt который например запускает анимацию челюстей. А EvilEnemy, наследник AngryEnemy должен челюстями щелкать и лапами хватать. Вот когда надо super.hurt() вызывать в методе AngryEnemy.hurt(). Иначе только лапами хватать будет. А насчет зачем в BaseEnemy пустой hurt() - всех врагов загоняем в один типизированый массив и можем вызвать hurt(), изз-за полиморфизма вызовется hurt непосредственно экземпляра того класса который есть.
Про this уже в начале написали. Лично я пишу только возврата экземпляра класса, когда надо наприемр сделать цепочку вызовов. |
|
|||||
Цитата:
Ладно, я вижу одни используют супер, другие - нет. Ну что же - официально признаю что я не могу привести пример, где без super нельзя обойтись. Но когда мне на практике такая ситуация встретится - я по-глупому, по-нубски напишу "super" там где он понадобится, а противники пусть лепят костыли и ломают голову как без этого ненавистного антирелигиозного "super" обойтись. Умываю руки. Всем спасибо за внимание и терпение
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 29.02.2012 в 18:47. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
HardCoder, сделали, чтоб нельзя было добавлять не Baloon - не добавляет. Был бы super - добавляло бы несмотря на это, делало это неочевидно и могло бы привести к багам. Если нужно исключение - прописываем его осознанно и явно.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Закрываю, ибо всё сказано.
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 23:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|