gpt4 book ai didi

java - 如何指定抽象父字段的子类

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:36 27 4
gpt4 key购买 nike

所以我想做的是在一个抽象类上有一个字段,并且当这个抽象类在其子类中继承时,能够将该字段作为抽象父类中声明的类的子类。

例如,我有一个抽象的 Player 类,然后是继承 Player 的 Client 和 Opponent(用于多人游戏)。 Player 有一个 Unit 类型的字段。 Unit本身由ClientUnit和OpponentUnit继承。我知道我可以为我的 Client 构造函数传递一个 ClientUnit 并将其分配为 Unit(继承,废话),但是我如何才能有一个 getter 以 ClientUnit 对象的形式返回它,而不会有异常和其他风险?

编辑:我添加了一些代码来更好地解释问题。

public abstract class Player {
private Unit unit;

public void setUnit(Unit unit) {
this.unit = unit;
}
public Unit getUnit() {
return unit;
}
}

public class Client extends Player {
@Override
public ClientUnit getUnit() {
return (ClientUnit)super.getUnit();
}
}

这似乎有效,但我不知道这是否是一种安全/可靠的方法。

最佳答案

我不确定我是否理解了你的问题,但也许Type Parameters可以帮助您:

public abstract class Player<T extends Unit> {

private T unit;

public Player(T unit) { }

public T getUnit() {
return unit;
}

public void setUnit(T unit) {
this.unit = unit;
}
}

以及实现类:

public class Client extends Player<ClientUnit> {

public Client(ClientUnit unit) {
super(unit);
}

public static void main(String[] args) {
Client client = new Client(new ClientUnit());
ClientUnit unit = client.getUnit();
}
}

关于java - 如何指定抽象父字段的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41572264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com