gpt4 book ai didi

java - 如何检查子对象是否来自特定类(而不是父类)(Java)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:41 24 4
gpt4 key购买 nike

我必须为学校编写一个基于文本的小型游戏,其中有一个玩家类和一个计算机类。在 Game 类中,我需要区分这两个类,以便仅当玩家不是计算机时我才能打印说明。

public class Player {
private String name;

public Player(String name) {
this.name = name;
}
}

public class Computer extends Player {
public Computer(String name) {
super(name);
}
}

我试过以下方法:

player1 = new Player;

if(player1.getClass() != Computer.class) {
System.out.println("Your turn, player 1.");
}

这应该打印“轮到你了,玩家 1”。因为播放器不是电脑,对吧?好吧,事实并非如此,否则我不知道该怎么做。

我试过 instanceof,但总是返回 true,因为 Computer 是 Player 的一个实例。

非常感谢您的帮助!

~大安

最佳答案

你可以用 instanceof 做到这一点:

if(!(player1 instanceof Computer))

...但这是一个糟糕的设计。由于计算机是一个玩家(继承),它们应该具有相同的能力(API)。一个非常简单的想法是让它们都使用 printGreeting() 方法实现 IPlayer 接口(interface):

public interface IPlayer {
void printGreeting();
}

public class Player implements IPlayer {
private String name;

public Player(String name) {
this.name = name;
}

public void printGreeting() {
system.out.println('Your turn! (or whatever)');
}
}

public class Computer extends Player {
public Computer(String name) {
super(name);
}

@Override
public void printGeeting() {
// NO-OP
}

}

关于java - 如何检查子对象是否来自特定类(而不是父类)(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092532/

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