我在AS3工作。我们有一个抽象类,称之为MyAbstractClass(我不认为它是真正抽象的,但我们只是扩展它)。扩展此类的类也实现了一个接口,称之为IMyInterface。 IMyInterface有一个名为updateView的函数。
我想在MyAbstractClass中使用我的一个函数来调用updateView,但当然MyAbstractClass没有一个名为updateView的函数,所以它不会编译。我尝试过一种糟糕的做法吗?有没有一种简单的方法来做我想要的?
我应该将updateView移动到MyAbstractClass,并在我需要的任何地方覆盖它吗?感谢
答案 0 :(得分:2)
是的,听起来这应该是MyAbstractClass
中的抽象方法。如果所有实现都实现IMyInterface
,听起来你应该声明MyAbstractClass
也声明它。当然,这些都要求您正确地MyAbstractClass
抽象。
基本上,您需要问问自己:从逻辑上讲,您是否应该将MyAbstractClass
的每个实例视为IMyInterface
?他们都应该updateView
吗?这对MyAbstractClass
有意义,还是逻辑上分开?
答案 1 :(得分:0)
从事物的声音来看,所有类,包括抽象类都需要实现IMyInterface,所以它应该位于层次结构的顶端。当然,那些扩展抽象类的类不需要显式声明它们实现了IMyInterface,但从概念上讲它们确实如此。
答案 2 :(得分:0)
如果要在“抽象”类中调用接口方法,可以执行以下操作:
if(this is IMyInterface) IMyInterface(this).updateView();
它会起作用,但它不是很漂亮或优雅。您可能应该重新思考您的层次结构,就像您正在考虑的那样。