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.
VererbungFehlermeldung: the hierarchy of the type "class name" is inconsistent
ich benutze eclipse 4.4.0 und JavaSE-1.8. Aus dem Buch "Grundkurs Programmieren in JAVA" habe ich folgendes Beispiel.
Java:
//*** Diese Klasse symbolisiert eine beliebige Waehrung ***//
public abstract class Waehrung {
//*** Gibt den Wert des Objektes in US-Dollar zurueck ***//
public abstract double dollarBetrag();
}
Diese Klasse kann ich problemlos an einen andere Vererben. Ich muss nur Im Foto ist es eine andere Klasse, aber der Vorgang war der selbe.
Java:
/** Die Waehrung Europas */
public class Euro extends Waehrung {
/** Ein Euro ist soviel Dollar wert */
private static double kurs=1;
/** Instanzvariable: Wert in Euro */
private double wert;
/** Konstruktor */
public Euro(double wert) {
this.wert=wert;
}
/** Deklaration der sonst abstrakten Methode dollarBetrag */
public double dollarBetrag() {
return wert*kurs;
}
/** Gibt den Wert der Waehrung in Euro zurueck */
public double euroBetrag() {
return wert;
}
/** Zugriff auf die private Klassenvariable */
public static void setEuroKurs(double Kurs) {
kurs=Kurs;
}
}
Wenn ich jetzt aber die Klasse Euro vererben will...
Java:
/*
* "Grundkurs Programmieren in Java - (6. Auflage, 2011)"
* 2001-2011, Carl Hanser Verlag
* Loesungsvorschlag zu Aufgabe 9.1 (Version 3.0)
* (c) 2001-2011 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
*
*/
class DM extends Euro {
// a) Konstruktor
public DM( double dm ) {
super(dm/1.95583);
// wegen der fixierten Wechselkursverhaeltnisse koennen wir diesen Wert 'hard-codieren'
}
// b) Konstruktor
public DM ( Euro euro ) {
super( euro.euroBetrag() );
}
// c)
public double waehrungsBetrag() {
return euroBetrag()*1.95583;
}
}
und ich "fix project setup..." ausgeführt habe bekomme ich die Fehlermeldungen
Die Ergebnisse der Googlesuch habe mir nicht weitergeholfen. Vielleicht kennt einer jenes Buch und hatte die gleichen Probleme.
Habe einen ersten weg gefunden, dass er das Programm immerhin compiliert. In der Klasse DM ein Objekt der Klasse Waehrung erstellen und eclipse die Verbindung zu der Klasse Waehrung herstellen lassen ("fix project setup...").
Die Dateien sind alle in eigenen Ordner. Mein Fehler war die Klasse DM nur auf die Klasse Euro zu verweisen und nicht auch auf die Klasse Waehrung. Eclipse macht das anscheinend ohne import Anweisung.
Ich kenne Eclipse nicht, aber wenn es tatsächlich eine Methode unterstützt, wie sich Klassen aus verschiedenen packages (ich vermute mal daß "Die Dateien sind alle in eigenen Ordner" das anzeigt) ohne import-Anweisung gegenseitig finden, ist es mir schon suspekt.
Vmtl. stimmt irgend etwas mit den Projekteinstellungen nicht.
Hast du auch ein "Java Project" angelegt, und nicht nur ein "Project"?
Und die Sourcecodes sind im Verzeichnis 'src' (gegebenenfalls in einem '(default package)') ? Und nicht einfach direkt im Projekt?
Dann hast du für jede Klasse ein eigenes (Java-)Projekt angelegt?!?
Das ist recht unüblich. Sofern sie thematisch zusammengehören, sollten alle in einem Projekt liegen, z.B.