Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.07.2010, 16:55
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 1  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
По умолчанию Haxe, доступ к методу класса-наследника

чето мозг сломал

пример их Мука

Код AS1/AS2:
public function Eat(foodItem) {
if (foodItem is Apple) {
if (foodItem.hasWorm()){
// яблоко червивое....
}
}
}
вот на Нахе:
Код AS3:
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;
	}
 
}
Код AS1/AS2:
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.');
	}
	}
}
ругается:
Цитата:
Food has no field hasWorm
пока я не обращаюсь к "hasWorm", все работает, и суши ест и яблоки
как этот кусок переделать чтобы не ругался?

Старый 19.07.2010, 17:57
Lao_kutuz вне форума Посмотреть профиль Отправить личное сообщение для Lao_kutuz Найти все сообщения от Lao_kutuz
  № 2  
Ответить с цитированием
Lao_kutuz

Регистрация: Nov 2008
Сообщений: 43
if (piece.hasWorm())...

piece - экземпляр класса Food, в котором нет свойства hasWorm.

Имхо, макароны - тоже еда, но них червяков нету (я по крайней мере не видел ни разу). Потому метод естьЧервь описан в классе яблоко, которое унаследуется от класса еда
__________________
На самом деле самого дела нет. В самой деятельности заключена самость дела - и наоборот.

Старый 19.07.2010, 18:12
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 3  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
это понятно, кэп!

del куча бреда //////

приведение типов:

Для АС3:

Код AS3:
Apple(piece).hasWorm()
Код AS3:
(piece as Apple).hasWorm()
для Хакса:

Код AS3:
cast(piece,Apple).hasWorm()


Последний раз редактировалось drnet_ua; 19.07.2010 в 20:58.
Создать новую тему Ответ Часовой пояс GMT +4, время: 09:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.