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 回答