2017-12-17 18 views
0

Ich arbeite an der Erstellung eines ATM-Maschine als Java-Projekt für einen meiner - Java-Anfänger Kurse und ich bin verwirrt darüber, wie ein Objekt einer Klasse als Parameter einer anderen Klasse. Ich weiß, wie man Vererbung verwendet, aber in diesem Fall sind Benutzer und BankAccount auf dem gleichen Niveau und das verwirrt mich in diesem Fall auch.Verwendung von Objekt einer Klasse als Parameter der anderen Klasse

Dies ist mein Code so weit:

Bankaccount-Klasse

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); 
    } 

    } 

Benutzerklasse:

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

Fehler hier: öffentliche Zeichenfolge Benutzer. Ändern Sie es durch den öffentlichen Benutzer Benutzer –

+2

Sie deklarieren das Feld 'user' als Typ' String' ('public String user'), aber es sollte als' User user' deklariert werden. –

Antwort

2

Ihre user Instanz den Datentyp User nicht String haben muss.

Es muss so aussehen:

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

die ausführliche Antwort:

Java bietet zwei Arten von Datendarstellung: primitive types und reference types.

Java verfügt über acht integrierte Datentypen, die als Java primitive types bezeichnet werden.

Diese acht Datentypen repräsentieren die Bausteine ​​für Java objects, da alle Java-Objekte nur eine komplexe Sammlung dieser Primitiven sind. (short, int, double, etc ..)

Referenztypen halten Verweise auf Objekte (Instanzen von Klassen).

Im Gegensatz zu primitiven Typen, die ihre Werte in dem Speicher enthalten, in dem die Variable zugewiesen ist, enthalten Verweise nicht den Wert des Objekts, auf das sie verweisen.

Stattdessen verweist ein Verweis auf ein Objekt, indem die Speicheradresse gespeichert wird, in der sich das Objekt befindet.

Instanzvariablen können sowohl Referenztyp als auch primitiver Typ sein. In Ihrem Beispiel verwenden Sie einen Referenztyp, der die Kontoeigenschaft "Benutzer" darstellt.

+0

Vielen Dank für Ihre Hilfe, Ahmad! Es hat offensichtlich funktioniert und jetzt werde ich nicht vergessen, meine Datentypen zu überprüfen, bevor ich sie Objekten zuweise. Danke noch einmal! – Monique

1

Nun, was Sie versuchen, ist eine String-Objektverweis ein Benutzerobjekt geben, deshalb passiert "Die Konsole sagt mir kann ich nicht Benutzer STRING konvertieren" passiert.

was Sie tun sollten, ist einfach diese Zeile ersetzen: public String user; mit diesem: public User user;, so dass die Objektreferenz dem Objekttyp selbst entspricht.

Verwandte Themen