Wie kann ich Methoden "schachteln"?

...komplette Frage anzeigen

3 Antworten

Natürlich geht das - nämlich indem Du eine offentliche, finale, statische Variable machst, welche einen Klassentyp hat.

Beispiel:

public class MyClass
{
  public void sayHello() { System.out.println("Hello"); }
}

public class Talker
{
  public static final MyClass hello = new MyClass();
}

Dann kannst Du hinschreiben

Talker.hello.sayHello();



ChuckxxNorris 03.08.2017, 16:18

Ah ok danke! 

Muss die Variable final sein?

0
ohwehohach 03.08.2017, 16:20
@ChuckxxNorris

Das geht natürlich im Prinzip auch mit einer Instanz von Talker. In diesem Fall könnte "hello" auch nicht-statisch sein. Das "final" sorgt in diesem obigen Fall dafür, dass man nicht einfach mit Talker.hello = new MyClass(); eine neue Instanz erzeugen kann. Eigentlich sollte das also nicht weggelassen werden.

2
ChuckxxNorris 03.08.2017, 16:22

Und könnte man mit einem Array mehrere Methoden mit "hello" verknüpfen? Zum Beispiel dann:

Talker.hello.cryHello();

,sowie immernoch:

Talker.hello.sayHello();
0
ohwehohach 03.08.2017, 16:23
@ChuckxxNorris

Ich weiß jetzt zwar nicht, was das mit einem Array zu tun haben soll und was Du mit "verknüpfen" meinst, aber, ja, wenn die Klasse mehrere public Methoden hat, dann kannst Du die alle so aufrufen.

Anhand dieser Nachfrage bin ich nicht sicher, ob Du wirklich verstanden hast, wie das funktioniert...

1
ChuckxxNorris 03.08.2017, 16:25
@ohwehohach

Oh sorry jetzt habe ich es verstanden :D

Das mit dem Array war dumm...

Danke für die Hilfe!

0

System is die Klasse java.lang.System

out ist eine globale, statische Variable von System. Ein objekt vom Typ java.io.PrintStream.

println() ist eine öffentliche Prozedur von java.io.PrintStream.

ChuckxxNorris 03.08.2017, 16:16

Das heißt so etwas kann ich selbst reproduzieren, wenn ich in einer Klasse sagen wir "Garten" ein Objekt sagen wir "Apfel" mit einer Methode "ernten" implementiere kann ich diese mit 

Garten.Apfel.ernten();

aufrufen?

0
PerfectMuffin 03.08.2017, 16:28
@ChuckxxNorris

Ja, nur dass du das Objekt nach der Konvention entweder als Konstante APFEL oder als reguläre statische Variable "apfel" nennen würdest.

1

Was möchtest Du wissen?