Flash 调用重写子类函数?
我有两个子类ClassA和ClassB都继承相同的基类 我还有一个函数,它有一个参数,可以是任一子类的实例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).
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'关键字?