Java:在对象数组中存储对象

时间:2012-10-22 23:42:49

标签: java

假设我有一系列客户端。 例如,每个客户端都在其中存储三个对象 客户[1]有一个CurrentAccountCreditCardDebitCard类。

我如何创建这样的数据库? 假设CurrentAccount有一个公共方法“getAmount” 如果我打电话,它会工作吗?

int num = Client[1].CurrentAccount.getAmount();

我很确定不会。但是,你如何创建这个数据库呢?

3 个答案:

答案 0 :(得分:0)

您必须创建一个客户端类,其中包含获取当前帐户,信用卡和借记卡的方法。然后,如果您有一组称为客户端的客户端,您可以执行以下操作:

int num = clients[1].getCurrentAccount().getAmount();

与此相同:

Client client = clients[1];
CurrentAccount account = client.getCurrentAccount();
int num = account.getAmount();

更短。

答案 1 :(得分:0)

public class Client{
  public CurrentAccount ca = new CurrentAccount();
  public CreditCard cc = new CreditCard();
  public DebitCard dc = new DebitCard ();
}

public class CurrentAccount { 
  private int amount = 0;
  public int getAmount(){ return amount; } 
}
某处......

client<Client>[] = new Client<Client>[3]();
client[1] = new Client();client[2] = new Client();client[3] = new Client();
int amount = client[1].ca.getAmount();

修改1  更好的做法是在客户端类中定义一个方法。

public class Client{
      private CurrentAccount ca = new CurrentAccount(); // note that its private now.
      public CreditCard cc = new CreditCard();
      public DebitCard dc = new DebitCard ();
      // define a property acccess getter method
      public int getCurrentAccountAmount(){return ca.getAmount();} 
}

并将其命名为:

int amount = client[1].getCurrentAccountAmount();

答案 2 :(得分:0)

抱歉,我不喜欢这种代码;)

您使用以下代码违反 Law Of Demeter

int num = clients[1].CurrentAccount.getAmount();

必须隐藏客户端因CurrentAccount而达到金额值的事实。实际上,这会导致Client类实现与您的陈述之间的耦合增加。

您应该在getCurrentAmount()类中定义名为Client的方法:

public class Client{

    private CurrentAccount currentAccount;

    //supposing constructor setting currentAccount here 

    //and below here, the new method
    public long getCurrentAmount(){
      return currentAccount.getAmount();
    }
} 

现在,您的Client类实现将更好地封装:

int num = clients[1].getCurrentAmount();