![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Подскажите, почему при реализации функций интерфейса,
если реализуемой функции присвоить модификатор доступа protected или private, то выводится ошибка? Если же public - все ок. Я например, хочу реализовать функцию интерфейса, но при этом, чтобы ее мог заместить (override) наследуемый класс, а для пользователя эта функция была бы недоступна. //Интерфейс: public interface IAction { function init():void; function destroy():void; } //Реализация package { public class Base implements IAction { public function Base() { } //Выдает ошибку, если модификатор доступа к функции protected protected function init():void { } public function destroy():void { } } } |
|
|||||
|
interface
"Определения методов интерфейса не могут иметь таких атрибутов, как public или private, но реализованные методы должны быть отмечены как public в определении класса, реализующего интерфейс."
__________________
местонахождение |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Да, но как тогда быть если: хочу реализовать функцию интерфейса, но при этом, чтобы ее мог заместить (override) наследуемый класс, а для пользователя эта функция была бы недоступна?
|
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Интерфейс нужен, чтобы определить/реализовать в классе четкий набор функций, для программиста. (чтобы программист не забыл реализовать все функции). Напр. в моем случае, мне нужно скрыть реализуемую ф-ю для конечного пользователя (тот кто будет использовать, а не расширять данный класс).
|
|
|||||
|
То есть вы пытаетесь заставить программиста интерфейсом заполнить необходимые методы? Интерфейс не для этого. В вашем случае это какое-то тз.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В интерфейсе описываются только публичные свойства и методы. Вам необходим базовый класс с пустым или непустым protected методом. Впрочем, я не очень понимаю, причем тут интерфейс, если ни protected, ни private методы снаружи вызвать нельзя.
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 243
|
К сожалению в AS3 нет абстрактных методов, поэтому могу вам только посоветовать использовать следующую конструкцию:
|
|
|||||
|
Обозначить доступные и недоступные для override протектид методы вы можете при помощи атрибута final.
Т.е. те у которых нет final - доступны для override
__________________
... |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Хорошо, тогда подскажите первоочередную задачу, для которых созданы интерфейсы?
Интерфейс — это набор объявлений методов, который позволяет несвязанным объектам взаимодействовать друг с другом. Т.е. например, если создавать паттерн стратегию, Интерфейс действительно объединяет стратегии (агрегируемые), которые класс Контекст (агрегатор) принимает и использует по правилам заданным в интерфейсе, т.е. Контекст владеет интерфейсом стратегии. Таким образом всегда предполагал, что Интерфейсы объединяют в систему объекты, для четкого и структурированного их использования программистом. Также Интерфейсы применяются, как маркеры. Цитата:
Да, для решения выше поставленной задачи так и делаю, видимо мне нужно более точно понять, для чего вообще созданы интерфейсы и какова их задача, к сожалению читал о них в различных книгах по action script 3 и там постоянно приводились примеры описывающие вышеприведенную ( в данном посте) взаимосвязь. Последний раз редактировалось Alexmody; 09.04.2013 в 14:43. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|