這個問題是從ActionScript的上下文構成的,但可以同樣來自Java。擴展對象時;爲什麼不在改變對象成員時使用「this」而不是「super」
我用作樣本的代碼來自adobe.com/devnet/flex/articles/flex4_skinning.html。在以下的代碼提取中,NoteCard類的已啓用和已禁用狀態,它繼承自SkinnableComponent類。我的問題是;爲什麼我們在啓用的setter中調用super.enabled = value;而不是this.enabled = value ;.我們已經從構造函數創建了我們的NoteCard對象實例,並且我們是否應該使用「this」關鍵字來設置成員成員的值。如果你換了super對於這個編譯器沒有顯示錯誤,但代碼無法工作。
package
{
import spark.components.supportClasses.SkinnableComponent;
public class NoteCard extends SkinnableComponent
{
public function NoteCard()
{
super();
}
override public function set enabled(value:Boolean) : void
{
if (enabled != value)
invalidateSkinState();
super.enabled = value;
}
override protected function getCurrentSkinState() : String
{
if (!enabled)
return "disabled";
return "normal"
}
}
}
不相關,但我使用這種相同類型的例子在面試測試中使用devs – divillysausages 2011-05-30 11:33:35