hi,
Gleiches gilt im Übrigen für Python. Auch hier gilt, dass Eigenschaften und Methoden prinzipiell von außerhalb angesprochen, beziehungsweise aufgerufen werden können. Eine Abgrenzung zwischen öffentlicher Schnittstelle und interner Implementierung erfolgt hier im Wesentlichen über Namenskonventionen. Soll eine Eigenschaft oder Methode privat sein, wird ihrem Namen ein Unterstrich vorangestellt.
Das ist in Perl genauso. Und was Overload betrifft: toString() und das kann man übrigens auch mit FileHandles machen. Beispielsweise so, daß ein print $fh
den Inhalt der Datei ausgibt auf welcher das Handle erstellt wurde. Und in Perl ist es seit Jahren Best Practice daß Funktionen sowohl mit Dateinamen als auch mit Handles gleichermaßen operieren, siehe auch <> (Diamond OP).
Aber schön daß Du es ansprichst, gerade den Stringkontext kann man mit OOP/Overload nämlich sehr zweckmäßig implementieren.
Das wäre auch ein Thema für den SELF Wiki, Vorschlag ist hier
MfG