代码之家  ›  专栏  ›  技术社区  ›  mway

AS3:接口和非公共方法

  •  0
  • mway  · 技术社区  · 14 年前

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

    我读过 this question 如果您想让某些类选择是否实现某些方法,但必须在实现任一接口的所有类中实现公共基方法,那么我认为答案是显而易见的。

    考虑到这一点,即使有了“私有实现”的想法(实际上不是),最好还是在接口之外为所有类显式定义私有方法?问题不在于强制某些类实现不同的方法,而在于这些方法的一般可见性。我猜答案是“是的”,但我想我会看看有没有人有什么见解。

    1 回复  |  直到 7 年前
        1
  •  5
  •   PatrickS    14 年前

    尽管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
      {
      }
    }