Форум 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=147437)

shaman4d 04.12.2010 15:45

Меотды обязательные к имплементации
 
Как сделать так чтобы наследник базового класса, например BaseObject'а в обязательном порядке должен был перегрузить некоторые методы и это возможно было бы проверять на этапе компиляции? Иными словами это как если сделать имплементацию интерфейса, только интерфейс используется в базовом классе.

Psycho Tiger 04.12.2010 15:55

Никак. Только на этапе исполнения с RTE.

Перегрузка подразумевает изменение сигнатуры. Перегрузки в AS3 нет.

shaman4d 04.12.2010 16:12

Т е получается что для каждого наследника мне придется помнить что нужно указать какой интерфейс он должен имплементировать?

Psycho Tiger 04.12.2010 16:26

Нет, ничего ненужно. BaseClass implements IBase, наследник BaseClass тоже будет IBase.

shaman4d 04.12.2010 16:48

Цитата:

Сообщение от Psycho Tiger (Сообщение 954918)
Нет, ничего ненужно. BaseClass implements IBase, наследник BaseClass тоже будет IBase.

Угу только в IBase я определю метод для имплементации show(), в BaseClass я буду вынужден этот метод имплементировать (иначе компилятор ругнется), а наследнику этот уже имплементированный метод достанеся в наследство и никто не "напомнит" его в наследнике переопределить. Вопрос именно в этом принудить программиста в наследниках переопределять методы доставшиеся от базового класса.

Wolsh 04.12.2010 16:56

Зачем наследовать класс, если ничего наследовать от него не нужно (мысли вслух).

shaman4d 04.12.2010 18:02

Цитата:

Сообщение от Wolsh (Сообщение 954925)
Зачем наследовать класс, если ничего наследовать от него не нужно (мысли вслух).

Затем что это абстрактный класс. Но вам, как я понял ничего об этом неизвестно.

derhab 04.12.2010 18:09

Цитата:

Сообщение от shaman4d (Сообщение 954914)
Т е получается что для каждого наследника мне придется помнить что нужно указать какой интерфейс он должен имплементировать?

чтоб на этапе компиляции контролировать - да

Wolsh 04.12.2010 20:33

Цитата:

Но вам, как я понял ничего об этом неизвестно.
1) Каюсь, моя служба разведки действительно не успела доложить, что Вы планируете этот класс как абстрактный. Мне действительно ничего об этом не было известно.
2) Странное дело.. Даже если бы разведка успела - я все равно задал бы этот вопрос. Абстрактный класс предполагает невозможность создания экземпляра (Delphi с их оригинальным взглядом "можно, но вызовет ошибку" в расчет не берем, да). Какое отношение это имеет к Вашему вопросу? В определении Абстрактного класса нигде не сказано, что он НЕ ДОЛЖЕН содержать реализаций. Он МОЖЕТ не содержать реализаций (как и любой другой класс). То, о чем пишете Вы - Интерфейс в чистом виде. Именно он "потребует" создать нужные методы в "наследниках" и явно напомнит об этом на этапе компиляции. Да Вы и сами это отлично понимаете, так что вопрос так и остался в силе.

derhab 04.12.2010 20:58

Цитата:

Сообщение от Wolsh (Сообщение 954982)
Именно он "потребует" создать нужные методы в "наследниках" и явно напомнит об этом на этапе компиляции.

только если наследники реализуют этот интерфейс, правильно? То есть в каждом классе наследника должно быть - implements IBase.


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

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