[英]Overriding function from another class
我在我的一個課程中定義了這個 function:
public function onUse():void {};
然后在我的另一個班級(我們稱之為“class2”)中,我創建了這個 class 的 object,然后想用另一個覆蓋這個 function。 經過一些 Google-Fu 之后,我找到了這個,並使用了它......
button.onUse {
variable = value;
}
...但它會立即執行,而不是在調用 onUse() 時執行 - 這似乎總是一個空的 function。
我沒有找到更多 - 我自己嘗試了一些東西,比如在 class2 中指定一個 function 並使用button.onUse = function();
,但它總是會拋出錯誤。
誰能告訴我我想做的事情是否真的可行,如果可行,我該怎么做?
您只能在擴展 class 時覆蓋函數:
public class A {
public function foo():void {
doStuff();
}
}
public class B extends A {
override public function foo():void {
doOtherStuff();
}
}
var n:A = new A();
n.foo(); // => calls doStuff();
var o:B = new B();
o.foo(); // => calls doOtherStuff();
因此,在運行時不可能將不同的 function 分配給實例的 class 方法。
但是,您可以讓您的原始 class 包含一個類型為Function
的字段,然后簡單地為其分配一個不同的閉包。
public class A {
public var foo:Function;
}
var n:A = new A();
n.foo = function ():void {
doStuff();
};
n.foo(); // => calls doStuff();
var o:A = new A();
o.foo = function ():void {
doOtherStuff();
}
o.foo(); // => calls doOtherStuff();
檢查語法
button.onUse {
variable = value;
}
function 將被定義為
公共 function onUse():void {};
並被覆蓋
override public function onUse():void {
}
在不同的 class
您嘗試執行此操作的方式並不構成覆蓋 function。
我在類似情況下所做的是在 class 中創建一個 onClickFunction function
public var onClickFunction:Function = null;
然后在 CLICK 事件監聽器 function 添加
if(onClickFunction != null){
onClickFunction();
}
然后你可以通過做這樣的事情來分配你的點擊功能
button.onClickFunction = function():void{ 變量 = 值; // 做東西 }
這不是最好的方法,但可能是實現功能的最簡單方法。 理想情況下,您會按照太空海盜建議的方式使用 inheritance。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.