Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich bin ein ziemlicher JAVA-Neuling und habe Probleme mit einem Konstruktoraufruf aus einer Unterklasse. Die Aufgabe besteht darin, einen Währungsumrechner zu schreiben (Eingabe z.b. in DM, umrechnen via EUR in andere Währungen). Einige Klassen, Methoden und Konstruktoren sind aus der Aufgabenstellung vorgegeben und müssen genau so eingebaut werden.
Klasse Euro: (ist aus der Aufgabenstellung vorgegeben und darf nicht angepasst werden)
Java:
public class Euro extends Waehrung {
private double wert;
public Euro(double wert) {
this.wert = wert;
}
public double euroBetrag() {
return wert;
}
}
Klasse DM: (der Konstruktor ist vorgegeben, Kursumrechnung muss nicht zwingend hier sein)
Java:
public class DM extends Euro {
public DM ( Euro euro) {
super(euro.euroBetrag()/kursdm);
}
}
Main Methode:
Java:
public class währungskalkulator {
public static void main(String[] args) {
System.out.println ("Bitte einen DM-Betrag eingeben:");
double dmBetrag = einlesen();
Euro euro = new DM(dmBetrag );
Hier ( new DM(dmBetrag )) meldet der Compiler dann "The constructor DM(double) is undefined".
Die Variable "wert" ist ja nun für jedes Objekt "private" und eigentlich nur über ein getter zugänglich. Um in der Main Methode den Wert eines Objekts für Berechnungen nutzen zu können müsse man die Methode euroBetrag() aus der Klasse Euro benutzen. Der Compiler motzt dass die Methode static sein müsse. Die Methode darf aber sicherlich nicht static sein, sonst wird der Konstruktoraufruf dann nicht funktionieren. Gibts da eine Möglichkeit?
Wo genau ist die Methode "waehrungsBetrag drin? ... Du rufst ja atm Euro.euroBetrag() auf. Das ist ein Static- Auftruf. Du musst schon auf dem Objekt das Aufrufen. Wenn die Methode in der Euro- Klasse ist willst du dort wahrscheinlich ein "this" haben. Also this.euroBetrag().
ich will ja nur aus der Euro-Klasse die Methode aufrufen.
Wenn ich das mit einem get (und static) mache dann gehts, nur darf man das gem. Aufgabe nicht.
Euro-Klasse:
Java:
public class Euro extends Waehrung {
private double wert;
public Euro(double wert) {
this.wert = wert;
}
public double euroBetrag() {
return wert;
}
}
also wenn ich das richtig verstehe willst du in der Methode "waehrungsBetrag" die Methode euroBetrag aufrufen. Wie oben schon gefragt, in welcher Klasse ist denn die Methode "waehrungsBetrag" ?
Die Methode "waehrungsBetrag" ist in der "Ausführklasse", dort wo auch die MainMethode ist. Das war der Vorschlag des Tutors dies so zu strukturieren...?!
okay... dann sollte die Methode ja auch nen Euro übergeben bekommen, wie Truckle schon gesagt hast. Ansonsten wird es schwierig und sinnlos auf die Methode zuzugreifen.
und wahrscheinlich sollte die Methode waehrungsBetrag dann auch static sein oder greifst du da mit einem Objekt der Klasse "währungskalkulator" drauf zu ?
hey vielen Dank euch beiden, hat super geklappt so.
Eigentlich ganz logisch wenn man es sich nun anschaut, aber ich glaub da waren zuviele Bäume um den Wald zu sehen..