Java Methode in anderer Klasse aufrufen

yxy

Lieutenant
Registriert
Juli 2014
Beiträge
552
Hallo,

ich habe in einem Package 2 Klassen.
In der ersten Klasse befindet sich die Main-Methode.
Von dort aus möchte ich gerne eine andere Methode B in der zweiten Kasse aufrufen.
Die Methode B soll mir als Rückgabewert ein Array (z.B. i={2,3}) liefern, das ich in der Main-Methode ebenfalls in einem Array speichern will.

Code:
package multiplikationstabelle;

public class main {

    public static void main(String[] args) {
         int x []= benutzereingabe();   //hätte ich jetzt intuitiv so gemacht, scheint aber falsch zu sein
        {
}

Code:
package multiplikationstabelle;

public class benutzereingabe {
    
    public static int [] benutzereingabe() {

        int spalteZeile []= {2, 3};
       
        return spalteZeile;
    }
}
 
Hier stand mist (Java ist zu lange her, Tumbleweed hats besser hin bekommen ;))
 
Zuletzt bearbeitet:
Danke dir trotzdem ;)
 
Zuletzt bearbeitet:
Entweder rufst du auf
Code:
benutzereingabe.benutzereingabe()
oder du entfernst das static keyword von der Methode und musst dann erst ein Objekt der Klasse instantiieren
Code:
new benutzereingabe().benutzereingabe()

Deine Benamung lässt an allen Ecken und Enden zu wünschen übrig. Es gibt für Java (wie für eigentlich alle Sprachen) Konventionen, die du dir mal ansehen solltest.
 
Zuletzt bearbeitet: (typo)
Ok, danke für deine Antwort.
Bitte entschuldige die fragwürdige Benennung, aber ich habe erst seit dieser Woche angefangen mich mit Java zu beschäftigen.

Wo genau liegt der Unterschied zwischen deinen beiden gezeigten Möglichkeiten? Im 2. Fall erzeuge ich eine Kopie, oder wie kann man sich das vorstellen?
 
Eine statische Methode hängt nicht an einer Instanz (also einem instantiierten Objekt einer Klasse), sondern an der Klasse selbst. Sie kann also nicht auf die Felder einer bestimmten Instanz direkt zugreifen, sondern höchstens auf statische Felder der Klasse.

Es gibt für beide Wege sinnvolle Anwendungsfälle. Statische Methoden werden z.B. genutzt, wenn du Logik in einer Methode unterbringen willst, die inhaltlich nicht instanzspezifisch ist. Ein Beispiel wäre eine Methode, die 2 Instanzen der Klasse Auto miteinander vergleicht und dir das schnellere von beiden als Antwort zurückgibt.
Code:
Auto auto1 = new Auto(200); // wir nehmen hier mal an, der übergebene Wert beschreibt die Geschwindigkeit
Auto auto2 = new Auto(150);
Auto schnelleresAuto = Auto.compare(auto1, auto2)
Alternativ könntest du das als Instanzmethode implementieren, also nicht-statisch. Der Aufruf wäre dann
Code:
Auto auto1 = new Auto(200);
Auto auto2 = new Auto(150);
Auto schnelleresAuto = auto1.compare(auto2);

Ich fänd hier die erste Variante sinnvoller, aber falsch ist auch die zweite nicht. Die zweite führt aber dazu, dass ein Auto Zugriff auf die Referenz eines anderen bekommt. Sind die Eigenschaften der Instanzen veränderbar, kann dadurch ein Auto das andere verändern, was zu unerwarteten Fehlern führen kann.
 
Denke auf dieses Thema werde ich früher oder später auch noch stoßen.
Der Code funktioniert jetzt so wie er soll, dankeschön!
 

Ähnliche Themen

Zurück
Oben