在Haxe中是否有办法获得相当于Java的抽象方法和抽象类?
我想要的是
// An abstract class. (Written in a Java/Haxe hybrid.)
abstract class Process<A> {
public function then<B>( f : A -> Process<B> ) : Process<B> {
var a : A = go() ;
return f(a) ;
}
abstract public function go( ) : A ;
}
// A concrete class.
class UnitP<A> extends Process<A> {
var _a : A ;
public function new( a : A ) {
_a = a ; }
public override function go() : A { return _a ; }
}
我能够得到的最接近的是将Process
定义为接口,并使用概念上抽象的类ProcessA
来实现它,它定义了两种方法; go
中ProcessA
的实施只会崩溃。然后我可以将我的概念上的具体类扩展到ProcessA。
答案 0 :(得分:7)
正如MSGhero所提到的,Haxe本身并不支持Java风格的摘要。虽然有几个人要求它,所以Andy Li写了一个宏来为Haxe用户提供类似的功能:
答案 1 :(得分:0)
我如何在Haxe做同样的事情
创建一个继承自Abstract的类并实现接口。
// An interface
interface IProcess<A, B> {
public function then( f : A -> AProcess<B> ) : AProcess<B>;
public function go() : A;
}
// An abstract class.
class AProcess<A, B> {
private function new() {}
public function then<B>( f : A -> AProcess<B> ) : AProcess<B> {
var a : A = go() ;
return f(a) ;
}
private function go() : A {};
}
// A concrete class.
class UnitP extends AProcess<A, B> implements IProcess {
var _a : A ;
public function new( a : A ) {
super();
_a = a ;
}
public function go() : A { return _a ; }
}