29.02.2012, 18:37
|
|
Регистрация: 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 уже в начале написали. Лично я пишу только возврата экземпляра класса, когда надо наприемр сделать цепочку вызовов.
|