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

virtual == 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 に答える