Java Eine Methode in einer Methode..?

vram78

Lieutenant
Registriert
Dez. 2015
Beiträge
712
Screenshot_2020-05-11-06-14-54.png


Guten Morgen,

Also im Bild sieht man ja eine Methode mit dem Namen sayHello()

Nun steht im Text, dass System.out.println()
ebenfalls eine Methode ist.

Jetzt bin ich ganz schön durcheinander.

Das bedeutet also, dass die Methode System.out.println() IN der Methode sayHello() ist, also eine Methode in einer Methode, richtig?
 
Was du meinst, bzw. was du dann da oben meinst ist ein Methoden-Aufruf. Du musst ja die Methoden/Funktionen/... irgendwie untereinander aufrufen (können).

Zum einen definierst du eben diese Methoden wie zB. das sayHello() :

Java:
static void sayHello()
{
   System.out.println("Hallo Welt");
}

Und irgendwo musst du sie ja aufrufen:

Java:
MyClass.sayHello();
 
dominic.e schrieb:
Was du meinst, bzw. was du dann da oben meinst ist ein Methoden-Aufruf. Du musst ja die Methoden/Funktionen/... irgendwie untereinander aufrufen (können).

Zum einen definierst du eben diese Methoden wie zB. das sayHello() :

Java:
static void sayHello()
{
   System.out.println("Hallo Welt");
}

Und irgendwo musst du sie ja aufrufen:

Java:
MyClass.sayHello();

verstehe ich nicht. Die Methode sayHello() rufe ich doch auf, indem ich sie in die main Methode reinschreibe
 
vram78 schrieb:
verstehe ich nicht. Die Methode sayHello() rufe ich doch auf, indem ich sie in die main Methode reinschreibe
Das ist korrekt, wo ist dann also das Problem? Das eine ist ein Aufruf einer Methode, das andere die "Deklaration" (das erstellen der) Methode selbst
 
  • Gefällt mir
Reaktionen: wahli
dominic.e schrieb:
Das ist korrekt, wo ist dann also das Problem? Das eine ist ein Aufruf einer Methode, das andere die "Deklaration" (das erstellen der) Methode selbst
Das heißt also, ich deklariere sayHello() und füge die Methode System.out.println() ein.

Also quasi eine Methode, die in einer Methode ist? o.O
 
In main() rufst du sayHello() auf, in sayHello() rufst du println() auf. Das ist genau dasselbe Prinzip
 
  • Gefällt mir
Reaktionen: wahli und dominic.e
Du deklarierst die Methode sayHello() welche die bereits deklarierte Methode println() aufruft.
Die Methode println() wird dir vom Objekt out (PrintStream) aus der System Klasse, zur Verfügung gestellt.
 
vram78 schrieb:
Das heißt also, ich deklariere sayHello() und füge die Methode System.out.println() ein.

Also quasi eine Methode, die in einer Methode ist? o.O
Ich empfehle dringend dir das Buch "Java ist auch eine Insel" zu besorgen und das sorgfältig zu lesen. Dir scheint das elementare Verständnis der Programmierung zu fehlen.
 
  • Gefällt mir
Reaktionen: burglar225, Burfi, dominic.e und eine weitere Person
Der Aufruf einer Methode ist was anderes als die Methode selbst.
 
  • Gefällt mir
Reaktionen: Maviapril2, new Account() und dominic.e
Maviapril2 schrieb:
In main() rufst du sayHello() auf, in sayHello() rufst du println() auf. Das ist genau dasselbe Prinzip
Ja, dann denke ich,dass ich nicht im Irrweg war
Ergänzung ()

wahli schrieb:
Der Aufruf einer Methode ist was anderes als die Methode selbst.
Ja. Methoden ruft man so auf : sayHello(); und erstellen macht man es mit folgendem Syntax: static void sayHello() {
System.out.println("hallo");
}
Ergänzung ()

G-Red schrieb:
Ich empfehle dringend dir das Buch "Java ist auch eine Insel" zu besorgen und das sorgfältig zu lesen. Dir scheint das elementare Verständnis der Programmierung zu fehlen.
Naja, ich denke, dass ich es hätte besser formulieren sollen. ,,eine Methode in einer Methode" hört sich wohl falsch an. :D
 
Zuletzt bearbeitet:
Wie man eine Methode implementiert - da gibt es auch andere Varianten. Das möchte ich hier aber nicht näher ausführen. Schau dir dazu irgendwelche Bücher an.
 
  • Gefällt mir
Reaktionen: dominic.e
vram78 schrieb:
,,eine Methode in einer Methode" hört sich wohl falsch an.

Ist auch mit Java möglich, aber wird - wenn überhaupt - selten verwendet.
 
  • Gefällt mir
Reaktionen: new Account()
Lokale Klasse ist das Stichwort. Im Wortsinne kann man damit innerhalb einer Methode eine Methode definieren. Ist aber wie gesagt unüblich und nichts, was ein Anfänger braucht. Selbst viele erfahrene Entwickler wissen vermutlich nicht mal, dass es diese Feature gibt.

Java:
class Sample {
    public static void main(String... args) {
        class Local {
            void sayHello() {
                System.out.println("Hello");
            }
        }

        new Local().sayHello();
    }
}
 
  • Gefällt mir
Reaktionen: Ortan und vram78
Stichwort "anonymous method":
Java:
// prints "Hello world!"
System.out.println(new Object() {
    @Override public String toString() {
        return "Hello world!";
    }
});
 
Ortan schrieb:
Du deklarierst die Methode sayHello() welche die bereits deklarierte Methode println() aufruft.
Die Methode println() wird dir vom Objekt out (PrintStream) aus der System Klasse, zur Verfügung gestellt.

Eine Information verstehe ich leider immer noch nicht. println() ist ja eine Objektmethode. Diese Objektmethode kommt ja aus der Klasse System. Deswegen ja auch System.out.println() Aber was hat PrintStream damit zu tun? Printstream ist ja ebenfalls eine Klasse.

Aber ich verstehe den Zusammenhang nicht. PrintStream und System sind beides Klassen. Das Objekt ,,out" ist ganz klar erkennbar von der Klasse System, genau so wie die println Methode. Ich verstehe es leider nicht
 
"out" ist Teil von java.lang.System, aber vom Typ java.io.PrintStream. Schau Dir den Code an. "out" ist eine Klassenvariable. Da statisch deklariert, benötigt man keine Instanz der Klasse "System", sondern kann direkt darauf zugreifen.
 
  • Gefällt mir
Reaktionen: wahli, Hayda Ministral und dominic.e
vram78 schrieb:
println() ist ja eine Objektmethode. Diese Objektmethode kommt ja aus der Klasse System.
Nein! Du rufst println auf dem Objekt out auf, das hat mit der Klasse System erstmal nichts zu tun. System ist nur eine Brücke, um an out zu kommen.
 
Zurück
Oben