AS3:Interfaces&非公共方法

时间:2010-09-12 19:47:12

标签: actionscript-3

我知道根据定义,AS3接口必须是公共的,并且其中的方法也必须公开实现。

我读了this question并且我想如果你想让一些类选择是否实现某些方法,但是有一些必须在实现任一接口的所有类中实现的通用基本方法,答案是显而易见的。

考虑到这一点,即使有了“私有实现”的想法(实际上并非如此),最好的想法仍然只是在接口之外为所有类显式定义私有方法?问题不是强迫某些类实现不同的方法,而只是这些方法的一般可见性。我猜测答案是“是”,但我想我会看到是否有人有任何见解。

1 个答案:

答案 0 :(得分:5)

虽然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
  {
  }
}