如何强制派生形式实现基类的方法而不使其抽象?
我收到的错误是“设计者必须创建一个'X'类型的实例,但它不能,因为该类型被声明为抽象”。先感谢您。
我会创建一个接口,以便每个表单都实现它。你能详细说明你的问题吗?
你不能强制一个类重写基类方法,除非它被标记为抽象,这也要求基类是抽象的。你有没有想过为这些方法定义一个接口?
正如 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();
}
}
您可以覆盖基类并定义抽象或虚拟方法。也许这就是你想要的。这是工作环境中的现实。