Flex覆盖以更改返回类型

时间:2012-03-24 17:15:32

标签: flex override return-value

我有两节课。

class A{
   protected var _value:A;

   public function get value():A{
      return _value;
   }
}

class B extends A{

   override public function get value():B{
      return super.value as B;
   }
}

我的压倒性错误,我不知道如何解决。我想覆盖一个方法并改变它的返回值。

3 个答案:

答案 0 :(得分:3)

您要查找的功能名为covariant return type,但不可用的功能是AS3。

答案 1 :(得分:1)

覆盖方法时无法更改方法签名。您可以选择使返回类型为两种方法的特定类型(如Object) - 但这会消除一些类型检查。

答案 2 :(得分:1)

您无法更改覆盖的返回类型或参数 - 签名必须始终匹配。

但是您当前的继承模型将允许您为A:

返回B.
class B extends A {

   override public function get value():A{
      return new B();
   }
}

并且您可以在调用方法中将返回值强制转换为B.

另一种方法是将返回类型设置为*,但您必须自己处理类型检查。