0

我正在尝试制作一个简单的可扩展类,然后对其进行扩展,然后将扩展类的实例放入一个变量中,然后调用扩展类覆盖的方法。在其他语言中,这被称为虚拟方法。我无法在 Haxe 中找到有关此的任何信息。

class Shape
{
    public virtual function DrawShape(): Void {}
}

class Triangle extends Shape
{
    public virtual function DrawShape(): Void { printf("Triangle"); }
}

class Square extends Shape
{
    public virtual function DrawShape(): Void { printf("Square"); }
}


//usage
var myShape : Shape;

//As Triangle
myShape = new Triangle();
myShape.DrawShape(); //outputs Triangle, even though it is type Shape variable

//As Square
myShape = new Square();
myShape.DrawShape(); //outputs Square, even though it is type Shape variable

因此,如果任何人知道如何在 Haxe 中执行此操作,请提供帮助。谢谢。

4

2 回答 2

2

虚拟 == 在 Haxe 语言中覆盖

于 2012-07-05T14:18:22.053 回答
0

尝试

interface IShape
{
  function drawShape () : Void;
}

class Tri implements IShape
{
  public function drawShape () : Void { return "Tri"; }
}

class Square implements IShape
{
  public function drawShape () : Void { return "Square"; }
}
于 2012-07-05T14:14:44.490 回答