【问题标题】:Java: Further Defining Classes and/or Uses for Classes?Java:进一步定义类和/或类的用途?
【发布时间】:2015-01-19 03:24:23
【问题描述】:

我正在使用 libgdx Java 框架和 Eclipse IDE 设计游戏。

我定义了一个字符类。我想使用这个类来定义所有可能的角色,因为它包含可用于敌人、玩家和老板的属性。

但是我不知道是否应该扩展课程或如何正确地扩展课程。如果有人能让我朝着正确的方向开始,我们将不胜感激。

这是我目前在记事本中输入的内容(Eclipse 尚未完全接受):

package com.mygdx.game;

public class Character
{
//variable declaration
private int health;
private int dmg;
private String image;

//constructor methods
public Character(int setHealth, int setDamage, String setImg)
{
    health = setHealth;
    dmg = setDamage;
    image = setImg;
}

//movement methods
public void walkLeft()
{

}
public void walkRight()
{

}
public void jump()
{

}
public void hit(int damage)
{
    health -= damage;
    if (health <= 0)
    {
        //getWorld().removeObject(this);
        //this is code that was written while I was using Greenfoot but Greenfoot works differently than a regular IDE so I need to adapt this code
    }
}
public int attack()
{
    return dmg;
}
}

以下是我想创建为角色的类的示例。

public class SilverGeneral extends Character
{
private boolean alliesDead;

public void attackArrow()
{
    dmg = 1
    Arrow a = new Arrow();
    getWorld().addObject(a, getX(), getY());
}

public void checkAllies()
{
    if (alliesDead == false);
    {

    }
    else
    {

    }
}

}

【问题讨论】:

  • 首先,使用if (alliesDead == false); 修复语法错误,分号完成if,因此else 不匹配。此外,if (!alliesDead) { 更短。

标签: java eclipse class libgdx extends


【解决方案1】:

我认为,在这种情况下,您应该使用Factory Design Pattern

看看这个example link 让你开始:

【讨论】:

  • 但是我不能写我的方法,因为我的 Character 变成了一个接口,我不能定义方法。它使我无论如何都必须重写我的方法,老实说,在任何情况下我都看不到接口的好处。它完全违背了代码重用的目的。
  • Java 8 引入了函数式接口,所以你可以在接口中定义你的方法。 javacodegeeks.com/2014/03/8-new-features-for-java-8.html
  • 我有 Java 8 但 Eclipse 说接口方法是自动抽象的,抽象方法不能有方法体。
  • 这很奇怪。你试过导入java.util.function
  • 另外,看看模板方法模式:sourcemaking.com/design_patterns/template_method
猜你喜欢
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2012-12-23
  • 2013-04-18
  • 2018-07-29
  • 1970-01-01
相关资源
最近更新 更多