首页 > 解决方案 > 获取另一个对象的对象

问题描述

如果我有两个类,Player 和 BankAccount。当使用构造函数创建玩家对象时,会自动创建银行账户对象并为其分配与玩家对象相同的“ID”。如果我创建了一个新玩家并将其命名为“player1”,我将如何获得玩家的银行账户?

例如,我将如何实现 player1.getBankAccount(); 并且能够使用比我在 BankAccount 类中创建的 getter 返回余额?就像以某种方式使用玩家的“ID”,并从中获取他们的银行帐户。谢谢,对不起,如果这没有多大意义。

玩家等级:

public Player(String name, BankAccount b, int id) {
    this.name = name;
    this.id = id;
    BankAccount bank = new BankAccount(); // assigning a NEW bank
                                           account for
                                          a new player when a player object is created
}

银行账户类:

public BankAccount(Player p, double balance) {
    this.p = p;
    this.balance = 10000.00;
}

标签: javaconstructor

解决方案


请至少尝试使用继承和多边形。例如,您的基类可以是带有 getter 的 BankAccount 来访问余额:

    public class BankAccount
{
    private double balance;

    public BankAccount(double balance)
    {
        this.balance = balance;
    }

    public double getBalance()
    {
        return balance;
    }
}

然后创建 Player 作为从 BankAccount 继承的子类:

public class Player extends BankAccount
{
    private String name;
    private int id;

    public Player(String name, int id)
    {
        super(10000.00);
        this.name = name;
        this.id = id;
    }
}

然后访问从 BankAccount 继承的 getter:

Player player1 = new Player("playerName", 1234567);
player1.getBalance();

做另一件事......“就像以某种方式使用玩家的'ID',并从中获取他们的银行账户。 ”,你可以尝试一些东西,只要 Player 的实例包含 id 参数或任何参数,它就会返回你的其他领域。当然,在您的示例中, id 始终是必需的,因此这仅在您重载构造函数以使其“可选”时才有意义:

public class Player extends BankAccount
{
    private String name;
    private String id;

    //Constructors
    public Player(String name, String id)
    {
        super(10000.00);
        this.name = name;
        this.id = id;
    }

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

    //Public method
    public String validateInstance(Player player)
    {
        if(player.id.isEmpty())
        {
            return "the instance has no id";
        }
        return getDetails();
    }

    //Getters
    private String getDetails()
    {
        return (getName() + " " + getId());
    }

    private String getName()
    {
        return name;
    }

    private String getId()
    {
        return id;
    }
}

然后像这样使用它,例如:

player1.validateInstance(player1)

您应该能够调整这种方法以实现您想要的。


推荐阅读