Ich möchte 2 Beträge aus Objekten addieren in einer dafür geschaffenen Methode addieren, weiß aber nicht genau, wie ich die Beträge aufrufen kann, um mit ihnen zu rechnen.
Grüße Jolom
Java:
publicclassBetrag{privateint x;// leerer KonstruktorpublicBetrag(){this.x =1;}// Konstruktor mit ParameterlistepublicBetrag(int neuesX){this.x = neuesX;}// hier möchte ich die Beträge addieren.publicvoid addieren (){}publicstaticvoidmain(String[] args){BetragBetrag1=newBetrag(6);BetragBetrag2=newBetrag(5);// mit diesem Aufruf will ich die Methode aufrufen.Betrag1.addieren(Betrag2);}}
NamedeDesObjects.Methode; so macht man das standartmäsig also bei dir ca so, Betrag1.Betrag(intzahl)
und genau so rufst du auch variablen auf zb Betrag1.Variable
equals(Object) dient als Referenzvergleich, es prüft ob im Speicher das gleiche Objekt Referenziert wird, wenn du prüfen willst ob die Werte deiner "Objekte" ( bzw. primitiven Datentypen ) identisch sind nutze
if(y.getWert()== x.getWert()){// Do something special :)}
[TIPP]Desweiteren kannst du auf primitiven Datentypen keine Methoden ausführen, sondern lediglich auf der Referenz einer Wrapper Klasse [/TIPP]
Bedeutet:
Java:
int x =3;
x.equals();// funktioniert nicht , da x kein Objekt sondern ein primitiver Datentyp ist....Integer x =3;
x.equals();// funktioniert, da x nun von einem Wrapper, also ein Objekt welches deinen primitiven Datentyp umhüllt referenziert wird
Also der Unterschied ist, das die main Methode statisch ist und deine equal-Methode nicht!
Aus statischen Methoden kann man nur auf statische Variablen und Methoden zugreifen.
Um einen objektorientierten Ansatz in dein Programm zu bekommen, solltest du eine separate Klasse Start schreiben die in der Mainmethode die beiden Objekte Betrag1 und Betrag2 erzeugt. Das hat eigentlich nichts in der Klasse Betrag verloren. Die Vergleichsmethode ist dann in deiner Startmethode und der Zugriff auf die beiden Werte wird über die Punktschreibweise mit den Objektvariablen programmiert.
Dann hast du einen sauberen objektorientierten Code.
Zum lernen von Java empfehle ich das Buch "Programmieren mit BlueJ".
Ist ein schönes Lern- und Arbeitsbuch und führt gut in objektorientierte Programmierung ein.
public class Start {
public static void main(String[] args) {
Betrag betrag1 = new Betrag(5);
Betrag betrag2 = new Betrag(3);
System.out.println("" + Start.addiere(betrag1.getX(), betrag2.getX()));
if (equal(betrag1, betrag2))
System.out.println("Ergebnis ist true");
else
System.out.println("Ergebnis ist false");
}
public static int addiere(int x, int y) {
return x + y;
}
public static boolean equal(Betrag b1, Betrag b2) {
if (b1.getX() == b2.getX())
return true;
else
return false;
}
}
Code:
public class Betrag {
private int x;
public Betrag(int x) {
this.x = x;
}
public int getX() {
return x;
}
}