Java抽象类常量

Java抽象类常量,java,Java,我有以下抽象类: public abstract class GameObject { protected final GameSession session; protected final int id; protected Point position; public GameObject(GameSession session, Point position) { this.position = position; this.id = session.getNewId(

我有以下抽象类:

public abstract class GameObject {
protected final GameSession session;
protected final int id;
protected Point position;

public GameObject(GameSession session, Point position) {
    this.position = position;
    this.id = session.getNewId();
    this.session = session;
}

public void setPosition(Point position) {
    this.position = position;
}

public int getId() {
    return id;
}

public Point getPosition() {
    return position;
}
每个
gameObject
还包含常量
WIDTH
HEIGHT
。我想为所有应该使用这些常量的游戏对象添加方法
getBar()
。下面是一个游戏对象的示例:

public class Wall extends GameObject {
private static final Logger logger = LogManager.getLogger(Wall.class);
private static final int WIDTH = 32;
private static final int HEIGHT = 32;

public Wall(GameSession session, Point position) {
    super(session, position);
    logger.info("New Wall id={}, position={}", id, position);
}
getbar()
如果它在
Wall
类中:

public Bar getBar() {
    return new Bar(position, position.getX() + WIDTH, position.getY() + HEIGHT);
}

如何正确实现
GameObject
?问题是我不能只在内部初始化
WIDTH
HEIGHT
,因为它们在子类中不同。

在抽象类
游戏对象中定义抽象方法getBar()

public abstract Bar getBar()
然后所有扩展了
GameObject
的类都必须实现它们。 例如,
Wall
类将有一个方法

@Override
public Bar getBar() {
    return new Bar(position, position.getX() + WIDTH, position.getY() + HEIGHT);
}
或者,您可以在
GameObject
中创建构造函数,该构造函数也将接受这些常量,然后您可以进行单个方法调用(无需重写):

然后在你的
Wall
课上

public Wall(GameSession session, Point position) {
    super(session, position, 32, 32); //Added WIDTH and HEIGHT
    logger.info("New Wall id={}, position={}", id, position);
}

谢谢你的全面回答。
public Wall(GameSession session, Point position) {
    super(session, position, 32, 32); //Added WIDTH and HEIGHT
    logger.info("New Wall id={}, position={}", id, position);
}