一般编程,抽象类调用方法它不“知道” - AS3

时间:2011-11-18 19:09:23

标签: actionscript-3 abstract-class

我在AS3工作。我们有一个抽象类,称之为MyAbstractClass(我不认为它是真正抽象的,但我们只是扩展它)。扩展此类的类也实现了一个接口,称之为IMyInterface。 IMyInterface有一个名为updateView的函数。

我想在MyAbstractClass中使用我的一个函数来调用updateView,但当然MyAbstractClass没有一个名为updateView的函数,所以它不会编译。我尝试过一种糟糕的做法吗?有没有一种简单的方法来做我想要的?

我应该将updateView移动到MyAbstractClass,并在我需要的任何地方覆盖它吗?感谢

3 个答案:

答案 0 :(得分:2)

是的,听起来这应该是MyAbstractClass中的抽象方法。如果所有实现都实现IMyInterface,听起来你应该声明MyAbstractClass也声明它。当然,这些都要求您正确地MyAbstractClass 抽象。

基本上,您需要问问自己:从逻辑上讲,您是否应该将MyAbstractClass的每个实例视为IMyInterface?他们都应该updateView吗?这对MyAbstractClass有意义,还是逻辑上分开?

答案 1 :(得分:0)

从事物的声音来看,所有类,包括抽象类都需要实现IMyInterface,所以它应该位于层次结构的顶端。当然,那些扩展抽象类的类不需要显式声明它们实现了IMyInterface,但从概念上讲它们确实如此。

答案 2 :(得分:0)

如果要在“抽象”类中调用接口方法,可以执行以下操作:

if(this is IMyInterface) IMyInterface(this).updateView();

它会起作用,但它不是很漂亮或优雅。您可能应该重新思考您的层次结构,就像您正在考虑的那样。