Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   проверка класса и интерфейса компилятором? (http://www.flasher.ru/forum/showthread.php?t=128816)

Troglodit 18.08.2009 12:29

проверка класса и интерфейса компилятором?
 
привет! У меня вопрос по ас3 ООП: мне нужно чтобы в функцию передавался только объект наследованый от Boo и имеющий интерфейс IGoo. Как это можно реализовать без проверок ифами, на уровне компилятора ?

спасибо

wvxvw 18.08.2009 12:51

Boo должен имплементить IGoo.

etc 18.08.2009 12:52

Никак. Во всяком случае, на текущий момент.

Troglodit 18.08.2009 13:20

Цитата:

Сообщение от wvxvw (Сообщение 843586)
Boo должен имплементить IGoo.

Ну тут вся суть в том чтобы заставить переданый класс обязательно оверрайдить все методы интерфейса, а при Вашем варианте обязательность теряется

fljot 18.08.2009 13:27

по-моему, такой вариант решил бы поставленную задачу
Код:

class BaseGoo extends Boo implements IGoo

function (param:BaseGoo):...

upd:
ну и методы интерфейса не оверрайдятся, а реализуются.. если необходимо, чтобы класс передаваемого экземпляра обязательно не пустым образом реализовывал эти методы - можно в классе BaseGoo во всех методах IGoo выбрасывать ошибки, тогда наследникам придётся все методы переписывать.. если я правильно вас понял вообще

Troglodit 18.08.2009 16:38

о! Это мысль! (насчет ошибок). Правда это не на стадии компилятора будет но все же лучше чем ничего. Спасибо!

Герыч 18.08.2009 17:08

а virtual разве в ActionScript нет(это насчёт обязательного оверрайда/реализации)?

etc 18.08.2009 19:06

Компилятор поддерживает, плеер — нет. Для порядку virtual стоит писать.

wvxvw 18.08.2009 21:01

Фишка в том, что в AS3 virtual - это антоним override. Т.е. любая функция, которая не override считается virtual (не важно, указали вы это или нет).

Герыч 18.08.2009 21:56

а, ё-маё, чушь тут городю) уже полгода к C++ не прикосался.. хотел сказать чистая виртуальная функция.
в c++ это так вролде записывается:
Код:

virtual void doSmth() = 0;
она делает класс абстрактым и требует переопределения в дочернем.

такого нет в AS?


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

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