[英]A variable that could take different types in?
TLDR:我需要一个可以从两个类中的任何一个接受对象的变量。
我正在开发Java 2D游戏,仍然可以使用其基础知识,这是一个问题:在Actor类中,在构造函数中,actor生成其Hitbox(4个XY坐标对象),然后将该Hitbox添加到需要检查碰撞的事物列表。
但是现在我已经完成了所有这些工作,我创建了一个新的平台Platform,以便我的角色可以走在敌人被污秽的尸体之外的其他物体上。 但是在Rect构造函数中,我有一个变量( Parent
)将自身设置为调用该构造函数的对象(其自身位于参数中),因此我将获得hitbox.parent()= player。
但是由于平台对象来自另一个类(我真的不想从Actor类继承),我如何才能使它成为Rect并为其自身提供不同类型的父对象?
现在的班级
package misc;
import item.Platform;
import npc.Actor;
public class Rect {
int x,y,wdt,hgt;
public Rect(Actor a){
x = a.x;
y = a.y;
wdt = a.wdt;
hgt = a.hgt;
}
public Rect(Platform p){
parent = p;
x =p.x;
y =p.y;
wdt =p.wdt;
hgt =p.hgt;
}
}
这是我遇到麻烦的地方
private static void collision(Rect r1,Rect r2){
if (r1.y -r2.y <= r2.hgt && r1.y -r2.y >= -r2.hgt){
r1.parent.yCol = true;
}else{
r1.parent.yCol = false;
}
if (r1.x -r2.x <= r2.wdt && r1.x -r2.x >= -r2.wdt){
r1.parent.xCol = true;
}else{
r1.parent.xCol = false;
}
}
您需要使用继承,这是面向对象编程的最重要方面之一。 您需要对其进行一些阅读,以了解它的工作方式以及使用方法: https : //docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
除了继承,您还可以使用基于接口的方法。
public interface GameRect {
int getX();
int getY();
int getHeight();
int getWidth();
}
public class Actor implements GameRect {
// implementation
}
public class Platform implements GameRect {
// implementation
}
public class Rect {
// implementation
private GameRect parent;
// constructor works for all classes that implement GameRect interface
public Rect(GameRect gr) {
parent = gr;
x = gr.getX();
y = gr.getY();
// etc
}
}
此类解决方案的问题在于,每次要在不是GameRect接口方法的parent
对象上调用类方法时,都需要回退到原始类型(分别是Actor和Platform)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.