AS3: Интерфейсы и закрытые методы - PullRequest
0 голосов
/ 12 сентября 2010

Я знаю, что по определению интерфейсы AS3 должны быть открытыми, и методы внутри них также должны быть реализованы как открытые.

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

Имея это в виду, даже с этой идеей «частной реализации» (которая на самом деле не является), является ли лучшей идеей все еще просто явно определить частный метод для всех классов вне интерфейса? Проблема не заставляет некоторые классы реализовывать разные методы, это просто общая видимость этих методов. Я предполагаю, что ответ «да», но я подумал, что увижу, есть ли у кого-нибудь понимание.

1 Ответ

5 голосов
/ 13 сентября 2010

Хотя AS3 не поддерживает абстрактные классы, почему бы не определить класс, который будет использоваться как абстрактный класс, и заставить его реализовать этот интерфейс и определить закрытые методы внутри этого класса.

interface IThing {
    function thisMethodIsPublic():void;
}

public class ThingAbstract implements IThing
{
  //throw an Error to avoid calling the class directly, 
  //this class needs to be subclassed
  //and this method overridden
  protected function thisMethodShouldOnlyBeVisibleToCertainClasses():void
  {
     throw new IllegalOperationError
          ('this method should be overriden in a subclass');
  } 

  public function thisMethodIsPublic():void
  {
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...