# toString(), Funktionsweise?



## Guest (31. Okt 2007)

Hallo,

Sagen wir die toString() Methode ist z.B. folgendermaßen implementiert:

```
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?


----------



## DocRandom (31. Okt 2007)

nö, mußt schon auch aufrufen 

lg
DocRandom


----------



## Wildcard (31. Okt 2007)

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:

```
System.out.println(anschrif);
```


----------



## Guest (31. Okt 2007)

Also wenn z.B. so eine Methode aufgerufen werden würde:

```
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?


----------



## Wildcard (31. Okt 2007)

Nein, warum denn? Wäre doch völlig nutzlos  ???:L


----------



## VuuRWerK (31. Okt 2007)

Nein, sie wird maximal Aufgerufen wenn Du ein Objekt im PrintStream ausgeben willst, also bspw:


```
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


----------



## DocRandom (31. Okt 2007)

Nein, aber wenn Du schreiben würdest:
	
	
	
	





```
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 :
	
	
	
	





```
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


----------



## Guest (1. Nov 2007)

ok alles klaro! 
danke!


----------

