在the Haxe manual中,我们看到一个示例,其中接口包含2个变量但是实现该接口的类也声明了这些变量:
interface Placeable {
public var x:Float;
public var y:Float;
}
class Main implements Placeable {
public var x:Float;
public var y:Float;
static public function main() { }
}
是否有必要这样做?
答案 0 :(得分:4)
编译器检查实现假设是否成立。也就是说,它确保类实际上实现了接口所需的所有字段。如果该类或其任何父类提供实现,则认为该字段已实现。
听起来非常喜欢我。无论如何,让我们试一试:
package ;
interface Placeable {
public var x:Float;
public var y:Float;
}
class One implements Placeable {
public var x:Float;
public var y:Float;
public function new() { }
}
class Two implements Placeable {
public var x:Float;
public function new() { }
}
class Main
{
public function new()
{
var one : Placeable = new One();
var two : Placeable = new Two();
}
}
产量
Building SomeTest
haxe -cp . -cpp bin/Test -main Main
./Main.hx:14: lines 14-17 : Field y needed by Placeable is missing
Build halted with errors (haxe.exe).
Done(1)
底线:是的,必须重新声明。