3

派生フォームを抽象化せずに、基本クラスのメソッドを強制的に実装するにはどうすればよいですか?

私が受け取ったエラーは、「デザイナーは型 'X' のインスタンスを作成する必要がありますが、型が抽象として宣言されているため作成できません」です。前もって感謝します。

4

4 に答える 4

12

すべてのフォームがそれを実装するように、インターフェイスを作成します。あなたの問題をもう少し詳しく説明していただけますか?

于 2012-05-11T06:42:00.777 に答える
3

クラスが抽象としてマークされていない限り、基本クラスのメソッドを強制的にオーバーライドすることはできません。これには、基本クラスも抽象である必要があります。これらのメソッドのインターフェースを定義することを考えたことはありますか?

于 2012-05-11T06:43:33.470 に答える
2

renatoが言ったように、コンストラクターのインターフェースを必要とする抽象基本クラスを作成することができます。AS3でそれを行ったときの例を次に示します。何が起こるかを理解し、それをソリューションに適用するのは簡単なはずです。


public class PyramidenMain extends ProbabilityGame implements IProbabilityGame{
    public function PyramidenMain(){
        super(this);
        super.initialize();
    }   

    //implement interface
}

public interface IProbabilityGame{
        function getGame():MovieClip;
        function customInit():void;
        function customLoginSuccessful():void;
        function customLoginError(xml:XML):void;
        function customShowError(msg:String):void;
        function createDemoProtocol():IProtocol;
    }

public class ProbabilityGame {
    public function ProbabilityGame(game:IProbabilityGame) {
        if(game == null) {
            throw new Exception("unmet requirement, parameter containing an instance of IProbabilityGame");
        }
        _game = game;
    }

    public function initialize() {
        //do some logic
        _game.customInit();
    }
}
于 2012-05-11T07:18:16.690 に答える
0

基本クラスをオーバーライドして、抽象メソッドまたは仮想メソッドを定義できます。おそらくそれがあなたが望むものです。職場環境の現実です。

于 2012-05-11T07:02:30.183 に答える