我正在创建一个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();
}
}
答案 0 :(得分:2)
您的user
实例的数据类型必须为User
而不是String
。
它必须如下所示:
public class BankAccount {
public double balance;
private int accountNumber = 333220;
public User user;
详细答案:
Java
提供两种类型的数据表示:primitive types
和reference types
。
Java有八种内置数据类型,称为Java primitive types
。
这八种数据类型代表Java objects
的构建块,因为所有Java对象都只是这些原语的复杂集合。 (short
,int
,double
等等。)
引用类型包含对对象(类的实例)的引用。
与在分配变量的内存中保存其值的原始类型不同,引用不会保留它们引用的对象的值。
相反,引用通过存储对象所在的内存地址指向对象。
在您的示例中,实例变量可以是引用类型和基本类型,您使用的是代表帐户属性的引用类型"用户" 。
答案 1 :(得分:1)
你正在尝试做的是给String对象引用一个User对象,这就是为什么“控制台告诉我我不能将用户转换为STRING”的原因。
你应该做的只是替换这一行:public String user;
使用:public User user;
,因此对象引用与对象类型本身匹配。