gpt4 book ai didi

java - 继承的 getter 返回 null

转载 作者:行者123 更新时间:2023-12-01 18:11:22 25 4
gpt4 key购买 nike

我有两个国际象棋类,一个抽象父类 Piece 及其普通子类 Rook

public abstract class Piece {
public enum Color {
BLACK, WHITE;
}

public enum Name {
KING, ROOK, BISHOP, QUEEN, KNIGHT, PAWN,
FERZ, WAZIR
}

private Name name;
private Color color;

public Piece(Color color) {
this.color = color;
}

public Name getName() {
return this.name;
}

-

public class Rook extends Piece {
private Name name;
private Color color;

public Rook(Color color) {
super(color);
this.name = Name.ROOK;
}
}

然后我在另一个类中使用Rook:

new Rook(Piece.Color.BLACK).getName() //null
new Rook(Piece.Color.BLACK).getColor() //BLACK

为什么getName()返回null

最佳答案

您有两个名为 name 的字段:子类中的字段隐藏父抽象类中的字段。 Rook 的构造函数初始化 Rookname。然而,继承的getName()返回的是Piecename的值。如果您删除子类中的该值,它将打印一个非空值(但是您必须将修饰符更改为 protected):

public abstract class Piece {
...

protected Name name;
protected Color color;

...
}

关于java - 继承的 getter 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32780922/

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