# default Konstruktor



## SanLuca1988 (24. Okt 2010)

Hallo Java Gemeinde,

wir haben in der Schule nun mit der Java Programmierung begonnen und sind nun dabei einige Vokabeln zu lernen.

In der letzten Stunde hat unser Lehrer uns ein Beispiel gezeigt, das mit einem Standardkonstruktor arbeitet. Also, wenn ein Objekt erzeugt wird und man hat keinen Konstruktor selbst geschrieben in der Klasse, so wird ein Standardkonstruktor von Java selbst gesetzt. So hab ich das verstanden. 
Jetzt ist in der Hausaufgabe eine Frage:
Warum kann man in der Klasse „Test" im selben Paket
ein Objekt von der Klasse „Kunde“ erzeugen, obwohl die Klasse
„Test“ keinen Konstruktor hat. Welches Risiko entsteht dadurch?
Ich habe geantwortet: 

Die Klasse "Test" hat zwar keinen sichtbaren Konstruktor, wohl aber einen default-Konstruktor der nicht extra codiert werden muss, er wird automatisch ausgeführt. Der default-Konstruktor hat immer die gleiche Sichtbarkeit wie die Klasse. Ist also die Klasse z.B. public, wird auch der automatisch eingeführte Konstruktor public sein. Ist die Klasse in einem Paket sichtbar, so ist es auch der default-Konstruktor in dem Paket sichtbar. Eine Gefahr besteht darin, dass man zwar die Klasse z.B. in einem Paket durchaus sichtbar halten möchte, aber nicht den Konstruktor. Hier muss man dann einen Konstruktor selbst anlegen. 

Hab ich das Theman und damit die Frage so richtig beantwortet. Kann mir jemand helfen? 

Vielen lieben Dank,

Lukas


----------



## Tobias (24. Okt 2010)

klingt soweit vernünftig.


----------



## Semox (25. Okt 2010)

Hallo SanLuca1988

Gute Frage, die mich auch interessiert. Mir fällt kein primäres Sicherheitsrisiko ein, weil man sich in der Literatur wenig damit beschäftigt, sondern eher damit wofür die Konstruktoren gut sind und wie man sie gebraucht.

Mir fallen dafür einige sekundäre Probleme (nicht Risiken) ein, z.B. hat man dann keine Attribute, die das Objekt beschreiben und somit für den Programmierer ein großes Problem darstellen, wie man nun Informationen von einer an eine andere Klasse mittels eines Objekts überträgt.

Oder eine andere Sache wäre es daß alle Methoden von einem parameterlosen omnipotenten Objekt innerhalb des Pakets aufgerufen und verwendet werden können. 

Jedenfalls ist es Kanon, daß jedes Objekt und damit auch sein Konstruktor für einen bzw. eine handvoll wenige, aber effiziente Zwecke geschaffen wird. Damit wird es für den Programmierer einfacher mit dem Objekt umzugehen und es innerhalb eines Programms zu verwalten.

Wie sehen das andere?

Gruß,
Semo


----------

