Konstruktor und Default Konstruktor

OOPler

Mitglied
Konstruktoren dienen dazu Objekte zu initialisieren. Inwiefern werden sie denn initialisiert? Denn in Referenzvariablen wird der Rückgabewert von new hinterlegt, welcher festlegt, wo genau im Heap sich die Variable befindet. D.h das Objekt bekommt doch seinen Wert von new und nicht vom Konstruktor?

Ich meine nur wenn ich einen Konstruktor schreibe wie im folgenden Beispiel:

Java:
public class Punkt
{
   public Punkt()
   {
      System.out.println("Hallo");
   }
}

public class TestPunkt
{
  public static void main(String[] args)
  {
     Punkt p = new Punkt();
  }
}


Inwiefern habe ich denn durch den Konstruktor das Objekt initialisiert, wenn es doch gar keinen Wert zugewiesen bekommt, sondern den eigentlichen Wert durch new zugewiesen bekommt?


mfg
OOPler
 
Danke. In meinem Code-Beispiel wird trotzdem ein Default-Konstruktor aufgerufen, da ich ja praktisch nur einen Text im Konstruktor Aufrufe? Gibt es auch eine Möglichkeit die Speicherfreigabe im Heap im Konstruktor manuell zu "steuern"? Und wenn der Konstruktor nur Speicherfrei gibt, dann folgt die Wertzuweisung, bzw. Initialisierung des Objektes, doch durch den new Operator statt?
 
Zuletzt bearbeitet:
Hallo

Mit Initialisieren im Konstruktor ist so etwas in der Art gemeint:
Java:
public class Test{
	
	private int zahl;
	
	
	public Test(int zahl){
		this.zahl = zahl;
	}
	
}

Test test = new Test(4);

Dadurch INITIALISIERST du beim erzeugen des Objektes dieses mit dem Wert 4;
Das new muss natürlich in eine geeignete Methode

Gruß Helmut
 
Ein Default Konstruktor ist ein leerer Konstruktor, also einer der nichts macht außer das Objekt auf dem Heap zu erzeugen. Diesen Default konsturktor hat jede Klasse, auch wenn du eine neue schreibst und keinen deklarierst.

Mit deinem Konstruktor hast du den Default konstruktor überschrieben. Soweit ich weiss kannst du in Java manuell mit dem Speicher nichts machen, dafür gibt es new und Garbage Collector

Verbessert mich bitte, bin selber Anfänger

Gruß Helmut
 
Mir ist nicht bekannt, dass man die Heap-Zuweisung manuell steuern kann.
Das könnte ja auch problematisch werden wenn du z.B. eine Klasse mit einem String initialisierst, ihr aber keinen Speicher reservierst, dann kann diesem String auch kein Wert zugewiesen werden.

Aber du kannst die minimale und maximale Größe des Heap festlegen.
Hier ist ein Link der etwas tiefer in dieses Thema geht: https://blog.codecentric.de/2011/03/java-speicher-konfiguration-und-uberwachung-3-akt/

VG,
EasyEagle
 
Ein Default Konstruktor ist ein leerer Konstruktor, also einer der nichts macht außer das Objekt auf dem Heap zu erzeugen. Diesen Default konsturktor hat jede Klasse, auch wenn du eine neue schreibst und keinen deklarierst.
Korrektur: Eine Default-Konstruktor hat eine Klasse nur dann automatisch, wenn gar kein Konstruktor definiert wurde. Sobald in der Klasse ein Konstruktor definiert ist, gibt es nur noch den.

Die Aussage "Jeder Klasse hat einen Default-Konstruktor" ist somit falsch.
 

Zurück
Oben