# Instanz der Klasse



## thor_norsk (1. Dez 2021)

Guten Abend,  
Sie haben folgende Vereinbarung der Klasse Tier:

[CODE lang="java" title="Klasse Tier"]class Tier {
    int groesse;


    Tier(int groesse) {
        this.groesse = groesse;       
    }
    ......
}[/CODE]

Was geschieht, wenn Sie eine neue Instanz der Klasse Tier mit der Anweisung 

     Tier keinesTier = new Tier();
erzeugen wollen? Begründen Sie Ihre Antwort.

Eigentlich wurde in dem Code eigener Konstruktor deklariert . Ich Weiß nicht, ob der Compiler trotzdem einen Standard - Konstruktor für den Instanz anlegt ???


----------



## DrPils (1. Dez 2021)

Der Compiler erzeugt den No Arguments Constructor nur wenn sonst keiner Vorhanden ist.


----------



## thor_norsk (1. Dez 2021)

Ich verstehe die Frage nicht?  Es wird eine Instanzvariable erzeugt oder passiert noch was anders ?


----------



## DrPils (1. Dez 2021)

Es wird ein Konstruktor aufgerufen der nicht existiert -> Compile Time Fehler


----------



## thor_norsk (1. Dez 2021)

Also: Da man in der Aufgabestellung eigener Konstruktor deklariert hat, hat man jetzt ein Problem ?  Also Instanzen kann man nur erzeugen, wenn man keinen eigenen Konstruktor wie in der Aufgabestellung deklariert ?


----------



## DrPils (1. Dez 2021)

thor_norsk hat gesagt.:


> Also Instanzen kann man nur erzeugen, wenn man keinen eigenen Konstruktor wie in der Aufgabestellung deklariert ?


Nein
Du kannst noch eine Instanz erzeugen, nur aber nicht mit dem parameterlosen Konstruktor.
Der Konstruktor `Tier()` existiert nun mal nicht, also kannst du genau den nicht aufrufen.
Du könntest eine Instanz noch mit  `Tier(42);` erzeugen.[/CODE]


----------



## White_Fox (1. Dez 2021)

Wenn die Klasse _keinen_ Konstruktor enthält, dann denkt sich der Compiler einfach den parameterlosen Konstruktor aus.

Wenn die Klasse jedoch mindestens einen Konstruktor enthält, nimmt der Compiler nur das was er vorfindet. Ohne automatisch irgendwas zu erstellen.

Am lehrreichsten ist es jedoch immer noch, das einfach mal selber auszuprobieren. Und damit etwas rumzuspielen - gerne auch mal kaputtspielen.


----------



## temi (2. Dez 2021)

DrPils hat gesagt.:


> Nein
> Du kannst noch eine Instanz erzeugen, nur aber nicht mit dem parameterlosen Konstruktor.
> Der Konstruktor `Tier()` existiert nun mal nicht, also kannst du genau den nicht aufrufen.
> Du könntest eine Instanz noch mit  `Tier(42);` erzeugen.[/CODE]


Oder du erstellst in deiner Klasse auch noch zusätzlich einen parameterlosen Konstuktor, wenn du meinst, dass du den dringend benötigst.


----------



## thor_norsk (7. Dez 2021)

OK . Danke!


----------

