Frage von eatsleepJava, 50

Was ist wenn ich in meinem Projekt 2 mal die gleiche Methode habe, kann ich trotzdem auf jede Methode seperat zugreifen?

Hi hier geht es um eine theoretische Fragestellung.

Mal angenommen ich habe die Klasse Apfel und die Klasse Baum. In beiden Klassen habe ich die Methode wachsen() jedoch sind meine Klassen in unterschiedlichen packages.

Besteht jetzt die Möglichkeit über einen Befehl wie zum Beispiel import package1.*; auf jede Methode seperat zuzugreifen?

Meiner Meinung nach könnte es nicht funktionieren, weil sobald ich die beiden Klassen mit import xxx.* verbinde wird es wohl unweigerlich zur Fehlermeldung kommen, aber ich lasse mich gerne eines besseren belehren.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 2

sofern du keinen static import meinst, ist das kein Problem.

Gehen wir die Beispiele durch:

Normale Methode einer Instanz:

class Apfel {
  public void wachsen() {
   ...
  }
}

Kein Problem, denn um die Methode aufzurufen, benötigst du sowieso eine Instanz:

Apfel apfel = new Apfel();
apfel.wachsen();

Baum baum = new Baum();
baum.wachsen();

Statische Methoden: 

class Apfel() {
    public static void wachsen() {
         ...
    }
}

Hier gilt dasselbe, denn bei statischen Methoden, ist die Klasse anzugeben:

Apfel.wachsen();
Baum.wachsen();

Eine sehr unschöne Sache hingegen sind sogenannte static imports: Man gibt beim Import eine statische Variable einer anderen Klasse mit:

import static java.lang.System.out;

sodass dein Code etwas kürzer wird:

out.println();

Wie gesagt, das ist sehr unschön, und man sollte es deshalb nicht verwenden, aber auch in diesem Falle könnte man immernoch auf beide Methoden zugreifen, in dem man bei der anderen Klasse den Klassennamen oder die Instanzbezeichnung voran stellt.

Antwort

Sprichst du über statische Methoden? Ja, du kannst durchaus auf beide im selben Quelltext zugreifen, aber nicht beide gleichzeitig über import static importieren.

Bei Objektmethoden ergibt die Frage nicht wirklich Sinn.

Antwort
von NeoExacun, 36

Apfel.wachsen()

Birne.wachsen()

Doch wachsen wäre in dem Zusammenhang ein Beispiel für etwas, was eine Objektmethode sein sollte und dann würde sich diese Frage nicht stellen.

Antwort
von DougundPizza, 28

Du kannst eine abstrakte Methode schreiben bei der die Berechnung durchgeführt wird.

Keine passende Antwort gefunden?

Fragen Sie die Community