|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Haxe, доступ к методу класса-наследника
чето мозг сломал
пример их Мука public function Eat(foodItem) { if (foodItem is Apple) { if (foodItem.hasWorm()){ // яблоко червивое.... } } } class Food { private var Callories:Float; private var Name:String; public function getCallories() { return Callories; } public function getName() { return Name; } public function setName(newName):Void { Name = newName; } public function setCallories(newCallories:Float) { Callories = newCallories; } public function new(newCallories) { setCallories(newCallories); } } class Apple extends Food { static var default_cal:Float = 100; private var _hasWorm:Bool; public function hasWorm():Bool { return _hasWorm; } public function new(newCallories:Float) { super(if (newCallories == 0) default_cal else newCallories); setName('Apple'); _hasWorm = if (Math.random() > 0.5) false else true; } } public function Eat(piece:Food) { if (Std.is(piece,Apple)) { if (piece.hasWorm()) { trace (_PetName +' founds worm in '+ piece.getName+' and refuses to eat it.'); } } } Цитата:
как этот кусок переделать чтобы не ругался? |
|
|||||
Регистрация: Nov 2008
Сообщений: 43
|
if (piece.hasWorm())...
piece - экземпляр класса Food, в котором нет свойства hasWorm. Имхо, макароны - тоже еда, но них червяков нету (я по крайней мере не видел ни разу). Потому метод естьЧервь описан в классе яблоко, которое унаследуется от класса еда
__________________
На самом деле самого дела нет. В самой деятельности заключена самость дела - и наоборот. |
|
|||||
это понятно, кэп!
del куча бреда ////// приведение типов: Для АС3: для Хакса: Последний раз редактировалось drnet_ua; 19.07.2010 в 20:58. |
Часовой пояс GMT +4, время: 09:01. |
|
« Предыдущая тема | Следующая тема » |
|
|