是否可以将 Point2D 对象从超类重写为 Point2D.Float?

问题描述 投票:0回答:1

我定义了一个名为“Entity”的类,其中包含一个名为“pos”的 Point2D 对象。该类是一个超类,并且没有指定“pos”应该是 Point2D.Float 还是 Point2D.Double,这由继承者决定。问题是我不知道如何重写这个对象以使其成为 Point2D.Float (例如)而不出现错误。

import java.awt.geom.Point2D;
public class Entity {
    Point2D pos;
    public Entity(Point2D pos) {
        this.pos = pos;
        //...
    }
    //...
}
import java.awt.geom.Point2D;
public class Enemy {
    // Somehow overrite "pos" so it must be Point2D.Float within this subclass
    public Enemy(Point2D.Float pos) {
        this.pos = pos;
        //...
    }
    //...
}

我尝试在声明

@Override
之前简单地插入
Point2D.Float pos;
注释,但我正在使用的虚拟环境表明这是对
@Override
的非法使用。 我不确定自己应该做什么,并且在 Stack Overflow 上没有找到任何答案。

提前谢谢您。

java class inheritance type-conversion superclass
1个回答
0
投票

这对你有用吗?你可以在实例化类时选择你想要的。

Entity<Point2D.Float> flt = new Entity<>(new Point2D.Float(2f,3f));
System.out.println(flt);
 

class  Entity<T> {
    T pos;
    public Entity() {
        
    }
    public Entity(T pos) {
        this.pos = pos;
    }
    public String toString() {
        return pos+"";
    }
}

打印

Point2D.Float[2.0, 3.0]
© www.soinside.com 2019 - 2024. All rights reserved.