# Was macht bzw. was bringt ein constructor?



## mystd (29. Apr 2011)

Ich verstehe nicht ganz was ein constuctor bringt, wann benutzt man ihn und wann nicht?


----------



## Blindxantos (29. Apr 2011)

Der Konstruktor wird automatisch aufgerufen, wenn ein Objekt erzeugt wird.

z.b. 
	
	
	
	





```
Auto meinRotesAuto = new [B]Auto()[/B];
```


----------



## mystd (29. Apr 2011)

D.h. er ist ne art platzhalter? Schön das ich so schnell eine antwort bekomme aber ich versteh immernoch nicht was der macht.

Nehmen wir mal den code aus dem tutorial mit dem ich übe:

```
import java.awt.Frame;
import java.awt.Label;
public class HowdyWindow extends Frame {
	private static final long serialVersionUID = 1L;
	public static void main(String arg[]) {
		new HowdyWindow();
	}
	HowdyWindow() {
		Label label;
		label = new Label("Howdy!");
		add(label);
		pack();
		setVisible(true);
	}
}
```


----------



## Noctarius (29. Apr 2011)

Nein, ein Konstruktur initialisiert ein Objekt. Dort können grundlegende Werte gesetzt werden oder sonstige Initialisierungen (welche nicht inplace gemacht werden können, z.B. weil Exceptions geworfen werden können) durchgeführt.


----------



## Atze (29. Apr 2011)

Noctarius hat gesagt.:


> (welche nicht inplace gemacht werden können, z.B. weil Exceptions geworfen werden können)



das war gemein noctarius  jetzt muss er wieder 2 sachen ergoogeln, er lernt doch grade erst


----------



## mystd (29. Apr 2011)

Quasi wie: Label label = new Label("Howdy!"); nur für objekte?


----------



## Kel (29. Apr 2011)

Ich find "inplace" nicht mit Google.


----------



## hexx (29. Apr 2011)

Kurz und vereinfacht dargestellt, ist ein Konstruktor eine Methode, die automatisch beim Erstellen eines neuen Objektes einer Klasse aufgerufen wird und dazu dient, das Objekt zu initialisieren (einen definierten Anfangszustand zu garantieren).

Stell dir z.B. eine Klasse 
	
	
	
	





```
Auto
```
 vor, die ein Attribut 
	
	
	
	





```
Farbe
```
 hat (Mit den zugehörigen Getter- und Setter-Methoden). Wenn du jetzt ein neues 
	
	
	
	





```
Auto
```
 Objekt erzeugst:

[Java]
Auto auto = new Auto();
[/Java]

hast du ein Auto ohne definierte Farbe. Wenn Du willst, dass ein Auto zwingend eine Farbe zugewiesen bekommt, kannst du einen Konstruktor erstellen:

[Java]
public void Auto( Farbe farbe )
{
    this.farbe = farbe;
}
[/Java]

Damit überschreibst du den Standardkonstruktor [1] und erzwingst, dass beim erstellen eines Auto Objektes eine Frabe definiert werden muss:

[Java]
Auto auto = new Auto( COLORS.ROT );
[/Java]


-hexx

[1] Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.5 Objekte anlegen und zerstören


----------



## Noctarius (29. Apr 2011)

Kel hat gesagt.:


> Ich find "inplace" nicht mit Google.




```
public class Foo {
  private Bar bar = new Bar();
}
```

Alternativ halt im Konstruktor:

```
public class Foo {
  private Bar bar;

  public Foo() {
    bar = new Bar();
  }
}
```


----------



## mystd (29. Apr 2011)

Ahhh super jetzt hab ich es verstanden ^.^


----------

