toString(), Funktionsweise?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

Sagen wir die toString() Methode ist z.B. folgendermaßen implementiert:
Code:
public class Anschrift { 
        private String strasse;  
        private String hausNr; 
        private int plz; 
        private String ort; 
     
        public Anschrift(String street,String h_Nr,int postleitzahl,String ortschaft) { 
            strasse = street; 
            hausNr = h_Nr; 
            plz = postleitzahl; 
            ort = ortschaft; 
        } // end of Konstruktor mit Parameter
        
        private Anschrift() {
            this.strasse = null;
            this.hausNr = null;
            this.plz = 0;
            this.ort = null;
        }
        
        public void setStrasse(String strasse) 
        {
            this.strasse = strasse;
        }
        public void setHausNr(String hausNr) 
        {
            this.hausNr = hausNr;
        }
        public void setPlz(int plz) 
        {
            this.plz = plz;
        }
        public void setOrt(String ort) 
        {
            this.ort = ort;
        }
        //implizite vaterklasse ist object/ bei klassen ohne extends      <============
        public String toString() { 
            return strasse + " " + hausNr + " " + plz + " " + ort; 
        } 
        
    } //end of class anschrift

Also sie wandelt das Object in ein String. Aber passiert das ganze ohne, dass sie explizit aufgrufen wird?
 
Anonymous hat gesagt.:
Also sie wandelt das Object in ein String. Aber passiert das ganze ohne, dass sie explizit aufgrufen wird?
Nein. Allerdings ruft die Klassenbibliothek diese Methode in bestimmten Fällen automatisch auf. Beispiel:
Code:
System.out.println(anschrif);
 
Also wenn z.B. so eine Methode aufgerufen werden würde:
Code:
 public void setAddress(String street,String h_Nr,int postleitzahl,String ortschaft) 
    {
        anschrift = new Anschrift(street, h_Nr, postleitzahl, ortschaft); 
    }

...dann wird auch automatisch die toString() Methode aufgerufen?
 
Nein, sie wird maximal Aufgerufen wenn Du ein Objekt im PrintStream ausgeben willst, also bspw:

Code:
Anschrift anschrift = new Anschrift();
System.out.println(anschrift);   // Jetzt wird automatisch die toString-Methode aufgerufen

Solltest Du keine implementiert haben wird einfach eine Ebene höher in der Vererbungshirarchie gegangen und dann eine da implementierte toString-Methode aufgerufen, in Deinem Fall würde dann Object#toString aufgerufen, aber wie gesagt nur wenn Du keine toString-Methode hast!

Gut Schuß
VuuRWerK 😉
 
Nein, aber wenn Du schreiben würdest:
Code:
public void setAddress(String street,String h_Nr,int postleitzahl,String ortschaft)
    {
        anschrift = new Anschrift(street, h_Nr, postleitzahl, ortschaft);
        System.out.println(anschrift);
    }
dann wird die Methode #.tostring aufgerufen!
mit :
Code:
public void setAddress(String street,String h_Nr,int postleitzahl,String ortschaft)
    {
        anschrift = new Anschrift(street, h_Nr, postleitzahl, ortschaft);
    }
erzeugst Du nur ein neues Anschrift-Opjekt!

Edit: mißt zu spät 😉
lg
DocRandom
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben