Java缺乏多重继承是否会损害其Android游戏开发的潜力?

时间:2016-01-13 18:12:53

标签: java android performance

我目前正在参加移动应用开发课程,我对我想要做的涉及虚拟宠物的游戏有所了解。我确信我能够毫无问题地将Java的功能用于本课程,但如果我想要融合宠物和/或品种,我想更进一步,我想使用Java实现我的想法可能变得困难。

我知道对象可以从多个接口继承,并且有通过其他方式获取变量的方法,但是在代码和应用程​​序效率方面,我最好还是使用另一种语言吗?

真的很期待这次讨论,因为我喜欢听到各方的利弊。 Java是我目前最喜欢的语言,因为我最熟悉它,但即便如此......如果我能做得更好,我也喜欢分支。我已经多次使用搜索引擎查看了这一点,但我认为这将是一种更加亲力亲为的方式来与人交谈,而不是简单地阅读过去的帖子。

提前致谢!

2 个答案:

答案 0 :(得分:1)

多重继承不适用于您的用例,因为它是编译时事物,我认为您根据运行时值引用了子类;我认为通过Composition和Decorator模式你会得到更好的服务。

答案 1 :(得分:0)

除了缺少多重继承之外,你将遇到更复杂的问题。当然,多重继承可能很有用,但到目前为止,我只有很少的情况会有所帮助(考虑到我使用的是Java)。相反,您可以使用接口,并实现多个。不一样,但与学位相似。

我真正指出的是,在C ++和Java之间进行选择时会产生更多后果。以下是我想到的一些内容:

  • 对于C ++,您必须使用NDK,这导致使用Eclipse(我认为Android Studio与NDK现在处于测试阶段?),在Java中您必须使用常规SDK,即Eclipse或Android Studio(后者是更好的方式)。
  • 在C ++中,你必须自己分配和释放对象,在Java中你有一个垃圾收集器。两者都有效,但如果你是初学者,你很容易陷入使用C ++的内存泄漏。
  • 使用Java,您将拥有一个垃圾收集器,如果分配大型对象,它可以暂停很多毫秒。并且当它运行时你无法控制它。这有时会导致帧率下降。开发人员使用的解决方法是保留对所有对象的引用,因此没有GC。但这也需要大量的记忆。
  • 如果你想要一个要求更高的游戏(例如3D),那么你将不得不使用C ++。当然,有些奇特的Java库可以用3D绘制,但性能总是很糟糕。使用C ++,您可以使用OpenGL,它允许您直接通信"使用GPU,使一切变得快几十倍。但它也像一种新的编程语言,需要一种不同的思维方式。