Fehlermeldung "Time is not abstract"

Status
Nicht offen für weitere Antworten.

Data

Mitglied
Hallöchen,

bekomme folgende Fehlermeldung für meinen Code:
"Time.java:1: Time is not abstract and does not override abstract method compareTo(java.lang.Object) in java.langComparable
public class Time implements Comparable {
^
1 error"

Liegt das daran, dass ich noch kein Objekt erzeuge oder stimmt etwas Grundlegendes nicht mit meinem COde?

Und gleich noch eine Frage: das Programm soll beim Setzen der Zeit (Zeile 30-34) eine IllegalArgumentException auswerfen. Das müsste doch mit Zeile 8-19 abgefangen sein, oder muss ich das hier auch noch mal machen?

Bin dankbar für jede Hilfe!

Code:
public class Time implements Comparable {
    private int
      hour,          // 0 .. 23
      day,           // 1 .. 31
      month;         // 1 .. 12

    // allgemeiner Konstruktor
    // Falls die Wertebereiche für die Attribute nicht eingehalten werden,
    // wird eine IllegalArgumentException ausgeworfen.
    public Time(int hour, int day, int month) {
     this.hour = hour;
     this.day = day;
     this.month = month;
     if (hour > 23 || hour < 0 || day > 31 || day < 0 || month > 12 || month < 0)
       throw new IllegalArgumentException(
                        "ungültige Eingabe! Bitte überprüfen!" + "Stunde: " 
                        + hour +"Tag: "+ day + "Monat: "+ month);
    }
  

    // Standardkonstruktor
    // Datum und Uhrzeit werden auf den 01.01., 00:00 Uhr eingestellt
    public Time() {
      hour = 0;
      day = 1;
      month = 1;
    }

    // die Zeit einstellen
    // Falls die Wertebereiche für die Attribute nicht eingehalten werden,
    // wird eine IllegalArgumentException ausgeworfen.
    public void set(int hour, int day, int month) {
    }

    // liefert eine Zeichenkette, welche die Attributwerte enthält
    public String toString() {
      return "Datum: " + day + "." + month + "." + "Stunde" + hour + ":00";
    }

    // zur Implementierung der Schnittstelle java.lang.Comparable
    // vergleicht das aktuelle Time-Objekt mit dem übergebenen Objekt o
    // liefert einen Wert < 0, wenn das aktuelle Objekt kleiner als t ist
    //                    > 0, wenn das aktuelle Objekt größer als t ist
    //                      0, wenn das aktuelle Objekt gleich t ist
    // Laufzeitfehler, falls o nicht vom Typ Time ist
    public int compareTo(Time o) {
      int month2 = o.month;
      int day2 = o.day;
      int hour2 = o.hour;
      //Fall1
      if (month2 < month)
        return -1;
      //Fall2
      if (month2 > month)  
        return 1;   
      //Fall3
      if (month2 == month && day2 < day)
        return -1;
      //Fall4
      if (month2 == month && day2 > day)
        return 1;
      //Fall5
      if (month2 == month && day2 == day && hour2 < hour)
        return -1;
      //Fall6
      if (month2 == month && day2 == day && hour2 > hour)
        return 1;
      //Fall7
      return 0;
    }

    // vergleicht das aktuelle Time-Objekt mit dem übergebenen Objekt o
    // liefert true, wenn das aktuelle Time-Objekt gleich o ist, sonst false
    // Laufzeitfehler, falls o nicht vom Typ Time ist
    public boolean equals(Object o) {
      if (o == null)
        return false;
      if (this.month == 0 && this.day == 0 && this.hour == 0)
        return true;
    }
}
 

byte

Top Contributor
Der Fehler kommt daher, dass Du das Interface Comparable nicht richtig implementiert hast. Du schreibst zwar eine Methode compareTo(), aber mit einer anderen Signatur als die im Interface. Dadurch überlädst du die Methode, anstatt sie zu überschreiben.

Die korrekte compareTo() aus dem Interface Comparable verlangt ein Object als Parameter. Du musst dieses Object dann in Deiner Implementierung erst auf Time casten.

Wegen der IllegalArgumentException: Generell musst Du dort eine Exception behandeln (mit try-catch), wo sie auftreten kann. Bei Dir wirft z.B. der Konstruktor die IllegalArgumentException. Das bedeutet, Du musst diesen Fehler immer dann behandeln, wenn Du ein Time-Objekt erzeugst. Die Methode setTime() sollte natürlich auch eine solche Exception schmeissen, wenn die Parameter falsch sind. Dann musst Du diesen Fehler natürlich auch behandeln, wenn Du die setTime() Methode aufrufst.
 

clemson

Bekanntes Mitglied
Data hat gesagt.:
Code:
    // allgemeiner Konstruktor
    // Falls die Wertebereiche für die Attribute nicht eingehalten werden,
    // wird eine IllegalArgumentException ausgeworfen.
    public Time(int hour, int day, int month) {
     this.hour = hour;
     this.day = day;
     this.month = month;
     if (hour > 23 || hour < 0 || day > 31 || day < 0 || month > 12 || month < 0)
       throw new IllegalArgumentException(
                        "ungültige Eingabe! Bitte überprüfen!" + "Stunde: " 
                        + hour +"Tag: "+ day + "Monat: "+ month);
    }

außerdem hast du da einen denkfehler: du weisst zuerst deinen lokalen variablen die übergebenen zu, und überprüfst erst dann, ob diese werte eigentlich ok sind. richtig wäre es, zuerst auf die richtigkeit zu überprüfen, gegebenenfalls eine exception zu werfen, und erst dann die werte zuzuweisen.
 

byte

Top Contributor
Stimmt, das ist mir beim ersten Blick gar nicht aufgefallen. Wobei das im Grunde dann auch egal sein sollte, weil das Objekt eh nicht erzeugt wird, wenn der Konstruktor ne Exception wirft.
 

L-ectron-X

Gesperrter Benutzer
byto hat gesagt.:
Dadurch überlädst du die Methode, anstatt sie zu überschreiben.
Entschuldige, wenn ich dich korrigiere. Aber in diesem Fall ist das nur eine Definition der Methode.
Sie wird weder überschrieben noch überladen.
Von überschreiben spricht man, wenn eine Methode (mit genau der gleichen Signatur) aus einer Basisklasse (Superklasse) in der abgeleiteten Klasse wieder auftaucht.
Von überladen spricht man, wenn eine Methode mit unterschiedlicher Methodensignatur mehrmals in ein und der selben Klasse auftraucht.
 

byte

Top Contributor
Das ist jetzt sicherlich eine Frage der Definition. Mag sein dass Du da recht hast.

Semantisch ist aber ein Interface nix anderes als eine abstrakte Klasse ohne Implementierung und Felder. Insofern kann man meiner Meinung nach auch statt implementieren auch überschreiben der Interface-Methode sagen. Schließlich kann man auch in beiden Fällen die Annotation @Override verwenden.

Überladen ist in diesem Zusammenhang vielleicht auch etwas unglücklich formuliert. Im Grunde versteht man darunter aber nur die gleiche Methode mit unterschiedlichen Parametern. Und das trifft ja in diesem Fall zu.

Naja, mag sein dass Du per Definition der Begriffe recht hast. Wobei auch fraglich ist, ob es da "die eine" Java-Bibel gibt, wo die Definition dieser Begriffe in Stein gemeiselt sind. ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ronny123 Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 1
F Fehlermeldung in Eclipse Java Basics - Anfänger-Themen 13
AllBlack Fehlermeldung Java Basics - Anfänger-Themen 19
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
Ostkreuz Fehlermeldung Java Basics - Anfänger-Themen 1
_so_far_away_ Fehlermeldung "Index 2 out of bounds for length 2" Java Basics - Anfänger-Themen 7
W Texteingabe - Bedeutung Fehlermeldung, Lösung? Java Basics - Anfänger-Themen 18
krgewb Fehlermeldung in web.xml Java Basics - Anfänger-Themen 4
W Warum diese Fehlermeldung? Java Basics - Anfänger-Themen 12
nbergmann Unverständliche Fehlermeldung Java Basics - Anfänger-Themen 56
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
J Fehlermeldung im Checkstyle Java Basics - Anfänger-Themen 11
S Fehlermeldung Java Basics - Anfänger-Themen 7
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
C Fehlermeldung Array zuweisen und printen Java Basics - Anfänger-Themen 22
J Fehlermeldung Java Basics - Anfänger-Themen 22
J Fehlermeldung: A JNI error Java Basics - Anfänger-Themen 3
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
JavaClara Fehlermeldung bei split-Methode Java Basics - Anfänger-Themen 12
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
C Fehlermeldung InOut. Java Basics - Anfänger-Themen 7
B Methoden if-statement error, FX, Fehlermeldung Java Basics - Anfänger-Themen 6
A Fehlermeldung Java Basics - Anfänger-Themen 5
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
M Java heap space Fehlermeldung beheben Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
T Fehlermeldung beim Versuch, einen String einzulesen Java Basics - Anfänger-Themen 4
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
H fehlermeldung Java Basics - Anfänger-Themen 447
H fehlermeldung Java Basics - Anfänger-Themen 9
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
C Fehlermeldung mit Intger. Java Basics - Anfänger-Themen 3
A Fehlermeldung Java Basics - Anfänger-Themen 3
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
H Fehlermeldung bei der Ausführung eines Compilierten PRGs Java Basics - Anfänger-Themen 9
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
x-tshainge Fehlermeldung Java Basics - Anfänger-Themen 2
M Erste Schritte NetBeans Fehlermeldung Java Basics - Anfänger-Themen 2
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
N Fehlermeldung bei Methode Java Basics - Anfänger-Themen 12
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
A checkstyle Fehlermeldung Java Basics - Anfänger-Themen 1
G Compiler-Fehler Fehlermeldung Java Basics - Anfänger-Themen 3
Pr0m3theus Fehlermeldung ArrayList add Java Basics - Anfänger-Themen 12
Arabicabohne Fehlermeldung bei Eclipse Java Basics - Anfänger-Themen 23
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
TheMenox Fehlermeldung / Arrays, Enhanced For Loops Java Basics - Anfänger-Themen 16
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
Henri Fehlermeldung Java Basics - Anfänger-Themen 2
K Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
J Bug? Seltsame Fehlermeldung Java Basics - Anfänger-Themen 7
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
J while(nst == 0) gibt Fehlermeldung Java Basics - Anfänger-Themen 4
L Fehlermeldung Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
J Launcher Fehlermeldung Java Basics - Anfänger-Themen 0
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
H Compiler-Fehler Fehlermeldung Kompilier Java Basics - Anfänger-Themen 4
A Fehlermeldung Unklar. Java Basics - Anfänger-Themen 1
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
D Fehlermeldung beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 4
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
A Compiler-Fehler Fehlermeldung auf Mac Java Basics - Anfänger-Themen 3
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
N Fehlermeldung nicht nachvollziehbar Java Basics - Anfänger-Themen 5
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
C addActionListener(this) - Fehlermeldung Java Basics - Anfänger-Themen 8
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
C GUI - SWT - Button-Fehlermeldung Java Basics - Anfänger-Themen 5
F Input/Output IOTools Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 16
K Erste Schritte Datei gelöscht - nun Fehlermeldung Java Basics - Anfänger-Themen 2
S Fehlermeldung Java Basics - Anfänger-Themen 8
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
E Fehlermeldung Java Basics - Anfänger-Themen 13
K Transparents Bild laden -> Fehlermeldung Java Basics - Anfänger-Themen 6
J Fehlermeldung reagieren Java Basics - Anfänger-Themen 10
F Array Fehlermeldung... Java Basics - Anfänger-Themen 2
B Fehlermeldung bei Klasse mit array Java Basics - Anfänger-Themen 3
L Erste Schritte Fehlermeldung bei Array-Programm Java Basics - Anfänger-Themen 4
G Fehlermeldung: A fatal error has been detected by the Java Runtime Environment Java Basics - Anfänger-Themen 7
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
K Fehlermeldung nach editor installation Java Basics - Anfänger-Themen 3
P Input/Output JOptionPane Fehlermeldung Catchen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben