java - 获取另一个对象的对象
问题描述
如果我有两个类,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;
}
解决方案
请至少尝试使用继承和多边形。例如,您的基类可以是带有 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)
您应该能够调整这种方法以实现您想要的。
推荐阅读
- python - 使用 df.to_excel (openpyxl) 从数据框写入时如何在 Excel 中增加行
- javascript - 为什么我不能在 index.js 中使用导出的路由
- cmake - Percona5.7 cmake 在 centos 7 上失败
- mysql - 如何为 wiki 家族建立数据库?
- java - Java - 如何测试 Catch 块?
- javascript - 来自 javascript 对象的方法始终未定义
- android - 根据 WHERE 条件从 Sqlite 中获取记录
- yaml - Hugo 嵌套循环遍历多层 YAML
- java - 如何在java中将字符串转换为布尔值?
- plotly-dash - 如何使用 dash_html_components.Script 命令