【发布时间】:2015-05-21 14:53:19
【问题描述】:
在 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 扩展我在概念上具体的类。
【问题讨论】:
-
Haxe 的“抽象”是完全不同的东西,所以不,不是开箱即用的。您的解决方案有效,也许宏可以实现(宏不能实现什么?)。
-
好吧,我的解决方案只能在有限的范围内发挥作用。如果我忘记在具体类中覆盖
go或实例化ProcessA,则不会出现编译时警告。
标签: haxe