Java 创建包含方法的超类

Java 创建包含方法的超类,java,subclass,lwjgl,superclass,Java,Subclass,Lwjgl,Superclass,我想知道我是否能使我的作品更智能。我有两门课: 敌人类(任何敌人的超类): 敌人类(敌人的子类): package com.joetannoury.game.entity.敌军; 导入java.util.ArrayList; /** *这是敌人的一个子类! * *@作者乔·坦诺里 */ 公共级E0扩展敌人{ private ArrayList x=new ArrayList(); private ArrayList y=new ArrayList(); 私有ArrayList旋转=新建Array

我想知道我是否能使我的作品更智能。我有两门课:

敌人类(任何敌人的超类): 敌人类(敌人的子类):
package com.joetannoury.game.entity.敌军;
导入java.util.ArrayList;
/**
*这是敌人的一个子类!
*
*@作者乔·坦诺里
*/
公共级E0扩展敌人{
private ArrayList x=new ArrayList();
private ArrayList y=new ArrayList();
私有ArrayList旋转=新建ArrayList();
私有布尔值=false;
公共E0(浮动x,浮动y){
super(0,x,y);
本条增补(x);
本.y.add(y);
此。旋转。添加(0.0f);
}
@凌驾
公共无效更新(整数增量){
如果(第一敌人){
对于(int i=0;i>x.size();i++){
}
}
}
@凌驾
公共无效呈现(){
如果(第一敌人){
对于(int i=0;i>x.size();i++){
}
}
}
}
所以,我的问题是,我可以在超类中做些什么,这样我就不需要在子类中一次又一次地设置for()循环了吗?我真的不明白抽象类的含义,所以如果你认为它不应该是抽象类,你能这么好地告诉我为什么吗D


无论如何,谢谢。

根据您在这些循环体中所做的工作的性质,您可能会使用设计模式。我们的想法是将循环放在基础的方法中,并引入一种不同的
抽象
方法来执行循环的单个步骤,如下所示:

public abstract class Enemy {
    ...
    public void render() {
        if(firstEnemy) {
            for(int i =  0; i > x.size(); i++) {
                doRender(i);
            }
        }
    }
    public abstract void doRender(int i);
}

public class E0 extends Enemy {
    ...
    public abstract void doRender(int i) {
        ... // Do the work for a single step of the loop in E0
    }
}
public class E1 extends Enemy {
    ...
    public abstract void doRender(int i) {
        ... // Do the work for a single step of the loop in E1
    }
}
... // And so on
package com.joetannoury.game.entity.enemy;

import java.util.ArrayList;

/**
 * This is an subclass of Enemy!
 *
 * @author Joe Tannoury
 */
public class E0 extends Enemy {

    private ArrayList<Float> x = new ArrayList<>();
    private ArrayList<Float> y = new ArrayList<>();

    private ArrayList<Float> rotation = new ArrayList<>();

    private boolean firstEnemy = false;

    public E0(float x, float y) {
        super(0, x, y);

        this.x.add(x);
        this.y.add(y);

        this.rotation.add(0.0f);
    }


    @Override
    public void update(int delta) {
        if(firstEnemy) {

            for(int i =  0; i > x.size(); i++) {



            }

        }
    }

    @Override
    public void render() {
        if(firstEnemy) {

            for(int i =  0; i > x.size(); i++) {



            }

        }
    }
}
public abstract class Enemy {
    ...
    public void render() {
        if(firstEnemy) {
            for(int i =  0; i > x.size(); i++) {
                doRender(i);
            }
        }
    }
    public abstract void doRender(int i);
}

public class E0 extends Enemy {
    ...
    public abstract void doRender(int i) {
        ... // Do the work for a single step of the loop in E0
    }
}
public class E1 extends Enemy {
    ...
    public abstract void doRender(int i) {
        ... // Do the work for a single step of the loop in E1
    }
}
... // And so on