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.
knabber hier an einer Aufgabe für die Programmiervorlesung. Mir ist in diesem Beispiel nicht klar, warum mir mein Compiler ständig diese Fehlermeldung anzeigt:
Lire.java [3:1] Euro(double) in Euro cannot be applied to ()
public Lire() {
dabei ist die geschweifte Klammer in meiner IDE hervorgehoben. Hier mal der Code ...
Code:
public abstract class Waehrung {
public Waehrung() {
}
public abstract double dollarBetrag();
public static double berechneSteuer(Waehrung[] geld) {
double summe = 0;
for(int i = 0; i < geld.length; i++)
summe += geld[i].dollarBetrag();
return summe * 0.08;
}
public static void main(String[] args) {
Waehrung[] Geld = new Waehrung[3];
Geld[0] = new USDollar(2500);
Geld[1] = new Yen(200000);
Geld[2] = new USDollar(20);
double Steuer = berechneSteuer(Geld);
}
}
Code:
public class Euro extends Waehrung {
private static double kurs = 1;
private double wert;
public Euro(double wert) {
this.wert = wert;
}
public double dollarBetrag() {
return wert * kurs;
}
public double euroBetrag() {
return wert;
}
public static void setEuroKurs(double Kurs) {
kurs = Kurs;
}
}
Code:
public class Lire extends Euro {
public Lire() {
}
}
Habt Ihr vielleicht eine Ahnung woran das liegen könnte? Wenn ich bspw. die Klasse Lire so gestalte, erhalte ich keine Fehlermeldung mehr :bahnhof:
Code:
public class Lire extends Euro {
public Lire(double lire) {
super(lire/1936.27);
}
}
danke, aber wieso ist das so? wieso stört sich meine subklasse daran, dass in der basisklasse kein parameterloser konstruktor vorhanden ist? Finde in meiner Literatur leider keine passende Antwort.
Wenn der Konstruktor von Lire aufgerufen wird muss einer der Konstruktoren der Superklasse, in diesem Fall Euro, aufgerufen werden.
Macht man das nicht explizit mit super( 123 ), nimmt der Compiler an, man möchte den Defaultkonstruktor (derjenige ohne Argumente) aufrufen, was in diesem Fall nicht möglich ist -> Error.
aaaah ja, vielen Dank. Ich hab's gerade ausprobiert und wundere mich, dass ich bisher noch nie auf diese Eigenschaft gestoßen bin :lol: Ich glaube, dass kann mir das Eine oder Andere mal noch recht nützlich sein.