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