当一个类实现一个接口时,是否需要重新声明接口变量?

时间:2014-11-12 16:48:16

标签: haxe

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() { }
}

是否有必要这样做?

1 个答案:

答案 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)

底线:是的,必须重新声明