あなたが求めていることを実行できるようにインターフェイスを作成します。これにより、変数をキャストする必要がなくなり、doSomething 関数にアクセスできるようになります。構造を使用した小さな例を次に示します。すべてのクラスが同じルート パッケージにあることに注意してください。したがって、インポート ステートメントはありません。
MainApp.as (これはデフォルトのアプリケーションです)
package
{
import flash.display.Sprite;
public class MainApp extends Sprite
{
private var parentClass : IParent;
private var doA : Boolean = false;
public function MainApp()
{
if (doA)
parentClass = new DerivedClassA();
else
parentClass = new DerivedClassB();
parentClass.doSomething();
}
}
}
親として
package
{
import flash.display.Sprite;
public class Parent extends Sprite
{
public function Parent()
{
}
}
}
DerivedClassA.as
package
{
public class DerivedClassA extends Parent implements IParent
{
public function DerivedClassA()
{
super();
}
public function doSomething() : void
{
trace (this + " done something");
}
}
}
DerivedClassB.as
package
{
public class DerivedClassB extends Parent implements IParent
{
public function DerivedClassB()
{
super();
}
public function doSomething() : void
{
trace (this + " done something");
}
}
}
IParent.as
package
{
public interface IParent
{
function doSomething():void;
}
}
ご覧のとおり、Interface の使用を参照してください。キャストなしで関数 doSomething を呼び出します。変数のキャストに問題はありませんが、これにより、より構造化されたコードが得られ、インターフェイスを実装するクラスに doSomething メソッドがあることが保証されます。それが役に立てば幸いです... G運