调用覆盖子类功能?

时间:2010-11-14 23:20:24

标签: flash actionscript-3

我有两个子类ClassA和ClassB都继承了相同的基类。

我还有一个函数,它有一个参数,可以是子类的实例。

function Test(instance):void //instance is either a ClassA or ClassB instance
{
    instance.DoSomething();
}

然而,当我运行测试时,它总是调用BaseClass.DoSomething()。我如何使用相同的函数(DoSomething()),但调用子类函数而不是基类1?

由于

2 个答案:

答案 0 :(得分:3)

如果您打算调用ClassA或ClassB

,则应将实例键入BaseClass
 //instance is either a ClassA or ClassB instance
 function Test(instance:BaseClass):void
 {
     instance.DoSomething();
 }

由于您在BaseClass中实现了DoSomething()方法,因此您可以覆盖ClassA&中的函数。 ClassB,以便为每个类提供特定的行为。

  //in ClassA
  override public function DoSomething():void
  {
      trace('I\'m being called in ClassA');
   } 

  //in ClassB
  override public function DoSomething():void
  {
      trace('I\'m being called in ClassB');
   } 

您现在可以试试这个:

    var classA:BaseClass = new ClassA();
    var classB:BaseClass = new ClassB();

    Test(classA);
    Test(classB);

答案 1 :(得分:0)

(instance as ClassA).DoSomething();