使用类的对象作为其他类的参数

时间:2017-12-17 13:06:08

标签: java

我正在创建一个ATM机作为我的一个Java-Begin-Java课程的Java项目,我对如何使用类的对象作为另一个类的参数感到困惑。我知道如何使用继承,但在这种情况下,User和BankAccount处于同一级别,在这种情况下也让我感到困惑。

到目前为止,这是我的代码:

BankAccount CLASS

package atm;

public class BankAccount {
    public double balance; 
    private int accountNumber = 333220; 
    public String user; 
    public BankAccount(){
        balance = 0; 
    }

    public BankAccount(double balance, int accountNumber, User user){ 
        this.balance = balance;
        this.accountNumber = accountNumber; 
        this.user = user;  // HERE, THE CONSOLE TELLS ME I CAN'T CONVERT USER TO STRING. USER HAS ONLY STRINGS AS PARAMETERS. DO I NEED TO CAST? HOW WOULD I DO IT? 

    }

    public void accountNumber(){
        accountNumber++;
    }

    public int getAccountNumber(){
        return accountNumber;
    }

    public void deposit (double amount){
        balance += amount; 
    }

    public void withDraw(double amount) {
        balance -= amount;  
    }

    public double getBalance (){
        return balance;  
    }

    public void transfer( BankAccount other,double amount){
        withDraw(amount);
        other.deposit(amount); 
    }

     }

用户类:

package atm;


public class User {


    public String name;  
    public String lastName; 
    private  int dOB; 

    public User (String aName, String aLast){
        name = aName; 
        lastName = aLast; 

    }

      public String getName(){
          return name;   
      }

      public String getLastName(){
          return lastName; 
      }

       public int getDOB(){
           return dOB; 
       }


      public String getUniqueKey(int dOB){
          String uniqueKey = name.substring(0,1) + name.substring(name.length() -1) + dOB + lastName.substring(0,1) + lastName.substring(lastName.length()-1); 
          return uniqueKey.toLowerCase(); 
      }



}

2 个答案:

答案 0 :(得分:2)

您的user实例的数据类型必须为User而不是String

它必须如下所示:

public class BankAccount {
    public double balance; 
    private int accountNumber = 333220; 
    public User user; 

详细答案:

Java提供两种类型的数据表示:primitive typesreference types

Java有八种内置数据类型,称为Java primitive types

这八种数据类型代表Java objects的构建块,因为所有Java对象都只是这些原语的复杂集合。 (shortintdouble等等。)

引用类型包含对对象(类的实例)的引用

与在分配变量的内存中保存其值的原始类型不同,引用不会保留它们引用的对象的值。

相反,引用通过存储对象所在的内存地址指向对象。

在您的示例中,实例变量可以是引用类型和基本类型,您使用的是代表帐户属性的引用类型"用户"

答案 1 :(得分:1)

你正在尝试做的是给String对象引用一个User对象,这就是为什么“控制台告诉我我不能将用户转换为STRING”的原因。

你应该做的只是替换这一行:public String user; 使用:public User user;,因此对象引用与对象类型本身匹配。