我有两个子类ClassA和ClassB都继承了相同的基类。
我还有一个函数,它有一个参数,可以是子类的实例。
function Test(instance):void //instance is either a ClassA or ClassB instance
{
instance.DoSomething();
}
然而,当我运行测试时,它总是调用BaseClass.DoSomething()。我如何使用相同的函数(DoSomething()),但调用子类函数而不是基类1?
由于
答案 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();