Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:进一步定义类和/或类的用途?_Java_Eclipse_Class_Libgdx_Extends - Fatal编程技术网

Java:进一步定义类和/或类的用途?

Java:进一步定义类和/或类的用途?,java,eclipse,class,libgdx,extends,Java,Eclipse,Class,Libgdx,Extends,我正在使用libgdxjava框架和eclipseide设计一个游戏 我定义了一个角色类。我想使用这个类来定义所有可能的角色,因为它包含可以用于敌人、玩家和老板的属性 然而,我不知道我是否应该扩展这个类,或者如何正确地扩展。如果有人能帮我找到正确的方向,我将不胜感激 以下是我在记事本中输入的内容(Eclipse尚未完全接受): 我认为,在这种情况下,您应该使用工厂设计模式 首先,用if(alliesDead==false)修复语法错误分号完成了if的运算,因此else不匹配。另外,如果(!all

我正在使用libgdxjava框架和eclipseide设计一个游戏

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

然而,我不知道我是否应该扩展这个类,或者如何正确地扩展。如果有人能帮我找到正确的方向,我将不胜感激

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


我认为,在这种情况下,您应该使用
工厂设计模式


首先,用
if(alliesDead==false)修复语法错误
分号完成了
if
的运算,因此
else
不匹配。另外,
如果(!alliesDead){
比较短。但是这样我就不能写我的方法了,因为我的角色变成了一个接口,我不能定义方法。这使得我不得不重写我的方法,老实说,我看不到接口在任何情况下的好处。它完全违背了代码重用的目的。Java 8引入了函数接口,所以可以在接口中定义方法。我有Java 8,但Eclipse说接口方法是自动抽象的,抽象方法不能有方法体。这很奇怪。您是否尝试导入
Java.util.function
另外,请查看模板方法模式:
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
    {

    }
}

}