2015-02-11 27 views
2

Android的游戏,我写的需要扩展PApplet,从处理库继承的类,在其整个游戏的基础的在MainActivity喜欢使用Google Play服务获得成就和排行榜,使用BaseGameUtils库。如何从两个库类继承?如果不可能,有什么选择?</p> <pre><code>public class MainActivity extends PApplet{ //code that can use PApplet methods, but not BaseGameActivity ones. } </code></pre> <p>现在,我想:

要使用BaseGameUtils库,我的MainActivity需要扩展BaseGameActivity,从BaseGameUtils库中继承的类:

public class MainActivity extends BaseGameActivity{ 
//code that can use BaseGameActivity methods, but not PApplet ones. 
} 

然而,这是不行的,因为Java不支持多重继承:

public class MainActivity extends PApplet extends BaseGameActivity{ 
} //INVALID! 

因此,我想知道,你能想到的任何替代的,因为我真的需要使用来自两个库的方法。我试过声明PApplet和BaseGameActivity对象并使用它们的方法,但它不起作用。我尝试创建一个单独的类,它将扩展BaseGameActivity,然后从MainActivity实例化并使用从BaseGameActivity继承的方法,但它不起作用。我尝试了其他方式(这可能没有道理,但你知道,试验和错误......),但它没有奏效。

我确定必须有一个解决方法,但在使用了主脑所拥有的所有资源之后,我仍然找不到任何资源。因此,我请求你的帮助。

预先感谢您!

+1

这是使用处理的缺点。处理必须是它自己的活动,而不仅仅是一个视图,所以像这样的东西是不平凡的。 – 2015-02-11 13:53:57

回答

0

您可以创建一个包装另一个类的实例的类,并提供只传递给包含的实例的方法。在Java 8中,您还可以在接口上提供默认方法实现,并且可以实现多个接口,从而允许多重继承的形式。

您只想使用BaseGameActivity的方法这一事实意味着这将适用于换行。

多继承有一个问题叫the diamond problem。当你有多重继承,并且你从两个拥有共同超类的父母继承而来,并且父母都重写相同的超类方法时,你在调用该方法时使用了哪个重写版本?

相关问题

 相关问题