将子对象传递给需要父对象的函数

时间:2013-09-09 07:21:39

标签: actionscript-3 oop

我有一个Spaceship类,它具有以下签名的功能: public function CheckMissileHit(enemies:Vector.<Spaceship>):void

我通过Spaceship继承了EnemySpaceship课程。现在,我的旧代码使用上面的函数如下: mPlayer.CheckMissileHit(mEnemySpaceships)

最初,mEnemySpaceshipsVector.<Spaceship>,但现在我想利用一些OOP概念并创建一个名为EnemySpaceship的单独类。

但不幸的是,如果我将Vector.<EnemySpaceship>传递给需要Vector.<Spaceship>的函数,我就搞砸了。 OOP的基本原则之一是多态性,那么如何在AS3中生成它?感谢。

2 个答案:

答案 0 :(得分:1)

在Actionscript中使用不同类型参数化的向量之间没有关系。不幸的是,你无法真正做到这一点。没有类似Java的List<? extends Spaceship>

为什么不使用Vector.<Spaceship>并将其填入EnemySpaceships?

答案 1 :(得分:1)

只需更改功能的定义即可。即:

public function CheckMissileHit(enemies:Vector.<Spaceship>):void

应该是

public function CheckMissileHit(enemies:*):void

此更改将使您的代码通过编译。我不确定,但如果EnemySpaceship继承了Spaceship,它应该可以通过Vector。&lt; EnemySpaceship&gt;没问题。