Kann eine Java Klasse mehrere Konstruktoren haben, müssen die Konstruktoren zwingend so heissen wie der Klassenname oder können sie auch anders genannt werden?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Kann eine Java Klasse mehrere Konstruktoren haben?

Ja, aber die Parametertypen müssen unterschiedliche Typen haben.

Müssen die Konstuktoren zwingend so heißen, wie der Klassenname?

Ja.

Siehe noch Fabrikmethode (Factory method).


kordely  03.12.2021, 20:09

Danke für den Stern!

0

Die Konstruktoren müssen zwingen so heißen wie die Klasse. Es kann beliebig viele (unterschiedliche) geben.


ranger1111  26.11.2021, 23:07

Hab gerade überlegt, ob man wohl in der Praxis 10^240 Konstruktoren haben kann. 😅

1
ArchEnema  26.11.2021, 23:10
@ranger1111

Naja OK. Beliebig viele, im Rahmen dessen was das Bytecodeformat und der Speicherplatz hergeben.

1
ranger1111  26.11.2021, 23:12
@ArchEnema

Wäre dennoch interessant zu wissen, was beim größten Computer der Welt bzgl. Speicherplatz wohl das Maximum wäre. Aber stimmt, die Anzahl der Parameter könnte auch ein Limit sein.

1
ArchEnema  26.11.2021, 23:18
@ranger1111

Ich hab das jetzt nicht nachgeguckt, aber ein Class-File hat ganz sicher eine Maximalzahl an Methoden und auch ganz sicher eine maximale Dateigröße. Beides ergibt sich aus den verwendeten Datentypen für Referenzen und Tabellenindizes.

Da braucht man gar nicht den größten Computer der Welt, das kann man am heimischen PC schon ausreizen.

1
ranger1111  26.11.2021, 23:24
@ArchEnema

Wäre trotzdem interessant zu wissen ab wie viel Konstruktoren der RAM voll wäre, wenn es der Bytecode erlauben würde. Und wann eine mehrere Terabyte große Festplatten voll wäre.

1

Klar kannst Du mehrere Konstruktoren haben.

Die Parameter müssen sich allerdings unterscheiden.
Der Name des Konstruktors muss der Klassenname sein.

Ach und Konstruktoren dürfen sich gegenseitige aufrufen.

Gruß


Nichtsnutz12 
Beitragsersteller
 27.11.2021, 00:36

Angenommen ich hab klasse a und klasse b, wie rufe ich Konstruktor b auf ohne klasse a zu verlassen?

0
AldoradoXYZ  27.11.2021, 02:14
@Nichtsnutz12

Einfach mit "new".

public class A() {

   private B myB;

   public A() {
      this.myB = new B(); //und schon hast Du eine Instanz von B
   } 
}

public class B() {
   public B() {
   }
}

Gruß

1

Die Konstruktoren werden über den Klassennamen und über den Fehlenden Return Typ identifiziert. Der Konstuktor muss also so heißen.

Falls du einen zweiten Konstruktor anlegen möchtest, könntest du theoretisch auch eine public static Funktion anlegen, welche die Klasse zurückgibt. In dieser Funktion wird dann ein anderer Konstruktor aufgerufen und die Instanz wird zurückgegeben.

Ein Beispiel in der Praxis wäre die Calendar Klasse. Um eine Instanz zu bekommen, ruft man Calendar.getInstance() auf.


Nichtsnutz12 
Beitragsersteller
 27.11.2021, 00:37

Angenommen ich hab klasse a und klasse b, wie rufe ich Konstruktor b auf ohne klasse a zu verlassen? Also innerhalb von klasse a?

0

In Java müssen die Konstruktoren so heißen wie die Klasse. In Pascal z.B. konnte man sich für einen Namen entscheiden.

Woher ich das weiß:Studium / Ausbildung – Informatik studiert und mit PCs & Technik beschäftigt

Nichtsnutz12 
Beitragsersteller
 27.11.2021, 00:37

Angenommen ich hab klasse a und klasse b, wie rufe ich Konstruktor b auf ohne klasse a zu verlassen?

0