【问题标题】:Java Abstract VS Interface in game?Which should I use?游戏中的Java Abstract VS Interface?我应该使用哪个?
【发布时间】:2018-10-21 13:55:17
【问题描述】:

当我想要创建多个 NPC 和项目时,当我希望他们执行一些相同的动作时,哪个更好,假设所有 NPC 都会移动 () ,checkCollide() 而有些有自己独特的行为,例如 trade() , questGiving()? 我目前正在使用抽象,因为我不太熟悉接口的工作原理以及为什么它们比抽象类更优越

【问题讨论】:

  • 接口为您提供最大的灵活性。
  • 接口更简单,所以如果你可以使用更简单的构造,请使用它而不是更复杂的构造。如果不能使用接口,请使用抽象类,或类、注解或枚举。

标签: java interface abstract-class


【解决方案1】:

在许多情况下,接口更好,因为一个类只能扩展一个(并且不能超过一个)类,但您可以实现任意数量的接口。当你扩展一个抽象类时,你已经有了一个继承,这会降低你的类的灵活性。

【讨论】:

    【解决方案2】:

    作为 Donat 回答的补充,接口还允许您的类之间更加解耦,这通常意味着您的代码将更容易扩展。例如,如果您想稍后添加新类型的 NPC,您可以在 interface contract 上增加新类,甚至创建新接口。您甚至可以开始考虑使用设计模式,包括做出这样的决定,例如 Decorator 设计模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 2013-03-21
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多