Flash 调用重写子类函数?

Flash 调用重写子类函数?,flash,actionscript-3,Flash,Actionscript 3,我有两个子类ClassA和ClassB都继承相同的基类 我还有一个函数,它有一个参数,可以是任一子类的实例 function Test(instance):void //instance is either a ClassA or ClassB instance { instance.DoSomething(); } 但是,当我运行测试时,总是调用基类。如何使用相同的函数(DoSomething()),但调用子类函数而不是基类函数 谢谢试试看 (instance as ClassA).

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

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

function Test(instance):void //instance is either a ClassA or ClassB instance
{
    instance.DoSomething();
}
但是,当我运行测试时,总是调用基类。如何使用相同的函数(DoSomething()),但调用子类函数而不是基类函数

谢谢

试试看

(instance as ClassA).DoSomething();
试一试


如果要调用ClassA或ClassB,则应将实例键入基类

 //instance is either a ClassA or ClassB instance
 function Test(instance:BaseClass):void
 {
     instance.DoSomething();
 }
由于在基类中实现了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);

如果要调用ClassA或ClassB,则应将实例键入基类

 //instance is either a ClassA or ClassB instance
 function Test(instance:BaseClass):void
 {
     instance.DoSomething();
 }
由于在基类中实现了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);

你能把你的密码寄出去吗?你有一个bug在里面。我会看看你是否发布了BaseClass和ClassA或ClassB。你是否缺少'override'关键字?你能发布你的代码吗?你有一个bug在里面。我会看看你是否发布了BaseClass和ClassA或ClassB。你是否缺少'override'关键字?