Welchen Typ von Parameter (das Zeug innerhalb der Klammern) erwartet die System.out.println() Methode?
Sie erwartet eine Stringreferenz als Parameter.
Eigentlich kann System.out.println()
mit verschiedenen Typen von Parametern umgehen,
einer von ihnen ist eine Stringreferenz.
Aber es wurde keine Version von System.out.println()
geschrieben, die eine Point
-Referenz nützen könnte.
So dass das folgende nicht aussieht, als ob es funktionieren könnte:
Point a = new Point(); // a ist eine Point-Referenz System.out.println( a ); | +--- sollte eine Stringreferenz sein
Dennoch funktioniert es aus dem folgenden Grund:
Wenn ein Parameter eine Stringreferenz sein sollte, aber stattdessen eine Referenz auf einen anderen Objekttyp übergeben wird, wird Java die toString()
Methode des Objekts aufrufen, um eine Stringreferenz zu bekommen.
Alle Objekte (jeden Typs) haben eine toString()
Methode, also wird das mit jedem Objekt funktionieren.
(Puzzle: ) Haben Stringobjekte eine toString()
Methode?