Keine Ahnung! Überladen?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

kann ich mehrere Methoden mit unterschiedlichen Methodendeklarationen in einer Klasse haben?
Also:
Code:
private int haus() {}
private long haus() {}

Danke
 
Habs noch nie ausprobiert, aber das wird sicher nicht klappen, weil der Aufruf beider Methoden ja gleich ist. Das Überladen einer Methode bezieht sich auf die Parameter und nicht auf den Rückgabewert.
 
Der Compiler hält die Methoden anhand ihrer Signatur auseinander.
Das heißt, er schaut sich die Argumente und nicht die Rückgabewerte der Methoden an. Beim Überladen müssen sich die Parameter, die von den Methoden erwartet werden voneinander unterscheiden (in ihrer Anzahl, der Reihenfolge oder ihrem Datentyp), während der Methodenname identisch sein muss.

Bei deinem Beispiel dürfte der Compiler einen Fehler ausgeben, weil er die Methode für bereits definiert hält.
 
Der Fehler wäre:
Code:
Duplicate method haus() in type <Klasse>

zumal das so kein sinn macht, denn ein Typ int passt immer in einen Typ long

Integer.MIN_VALUE > Long.MIN_VALUE
Integer.MAX_VALUE < Long.MAX_VALUE
 
Und wie ich gerne zu sagen pflege:

"Erst kam das Wort, dann der Duden."

Was das bedeuten mag, darüber kann ja mal jeder für sich selbst nachdenken..
 
Oha... ein Dudenreiter :bae:


Es hat keinen Nutzen (wenn dir Sinn nicht passt) da ein int in einen long passt!

Sinnvoller (hehe) wäre es gewesen einmal return Wert int zu haben und einmal double!

Würde man halt mal WIEDER IN DEN FAQ ZUERST LESEN dann hätte man gesehen, dass das dort schon steht..
 
entschuldige mischer.... ich werd mich bessern :meld:

Extra für dich die Korrektur:

Mich selber hat gesagt.:
Der Fehler wäre:
Code:
Duplicate method haus() in type <Klasse>

Zumal diese Methoden keinen Sinn ergeben, da ein Typ int immer in einen Typ long passt.

oder

Den Methoden mangelt es allerdings an Sinn, da [..]


It doesn´t male sense, because a long contains an integer.

oder

einfach nur wayne!? ???:L

Integer.MIN_VALUE > Long.MIN_VALUE
Integer.MAX_VALUE < Long.MAX_VALUE
 
Hier ist der Fragensteller!

Mein Fehler. Das habe ich davon die Frage abkürzen zu wollen. (Wenn ich wüsste unter was ich bei den FAQ's suchen müsste, was ich getan habe, dann müsste ich diese Frage nicht im Forum stellen. Mein Fehler dass ich so dämlich bin).

Ich habe einen Datumswert in der Form 1.1.1970 11:24:00.
Von diesem Datum interessiert mich allerdings nur die Zeit! Diese muss ich mit einer anderen Zeit vergleichen bzw. eine Differenz errechnen. Das, so denke ich habe ich herausgefunden, funktioniert so in dem ich das obige Datum in einen long umwandle und einfach beide Daten subtrahiere.
Das Problem ist also: ich brauche einen Rückgabewert String und einen long. Und ich kann es nicht glauben, dass cih daür zwei Methoden aufsetzen muss.
Im folgenden der wirklich alles andere als tolle code:
Code:
  private void setSollAnkunft(String b) {
    sollAnkunft = b;
    try {
      if (sollAnkunft != null) {
        setSollAnkunftTime(df.parse(sollAnkunft).getTime());
      }
    }
    catch (ParseException ex) {
      ex.printStackTrace();
    }
  }

  public String getSollAnkunft() {
    return sollAnkunft;
  }
  private void setSollAnkunftTime(long l) {
    sollAnkunftTime = l;
  }
  public long getSollAnkunftTime() {
    return sollAnkunftTime;
  }

Das muss doch besser gehen!?

Danke
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben