2012-07-05 146 views
0

我想製作一個簡單的可擴展類,然後對其進行擴展,然後將擴展類的實例放入一個變量中,然後調用擴展類的overriden方法。在其他語言中,這被稱爲虛擬方法。我無法在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請幫助。謝謝。

回答

2

虛擬==覆蓋

+0

謝謝你,我也有,在我的其他代碼了。事實證明,一對錯字導致應用程序無法按預期工作。 –

0

嘗試在HAXE語言

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"; } 
}