我想继承“superClass”并覆盖其中一个函数。
public class superClass {
protected function f1(...) : Boolean {...}
protected function f2(...) : Boolean {...}
...
protected function f100(...) : Boolean {...}
}
public class subClass extends superClass {
// override f1 in the subclass
protected override function f1(...) : Boolean {...}
}
问题是“superClass”是从swf加载的。我的项目中没有对类定义的引用。有没有办法做下面的事情?
public class subClass {
private var superClassObject: Object;
// construct from an instance of superClass
public function subClass (s : Object) {
superClassObject = s;
}
private function myF1(...) : Boolean {...}
override InvokeFunction (fname: string, args: Array) : Object {
if (fname == "f1") {
return myF1(args);
} else {
return superClassObject.InvokeFunction(fname, args);
}
}
}
我不确定AS中是如何实现函数调用的。 “InvokeFunction”应该是什么?
答案 0 :(得分:0)
你应该使用.swc,而不是.swf。要扩展的类必须在编译时可用,而不是在运行时。无论如何,如果使用swf是强制性的,您可以使用不同的技术来“覆盖”功能。
除了继承之外,还有其他OOP概念(Composition, Aggregation
等)和设计模式(Proxy,Adapter
等...)来改变类的功能。你可以使用它们。