Was ist ein Konstruktor in Java und wie wird er verwendet?

Was ist ein Konstruktor in Java und wie wird er verwendet?

In der objektorientierten Programmierung ist ein Konstruktor eine spezielle Funktion, die Sie aufrufen, um ein Objekt zu erstellen. Konstruktoren haben mehrere einzigartige Funktionen, die es ihnen ermöglichen, zu arbeiten.





In Java benennen Sie einen Konstruktor nach seiner Klasse. Ein Konstruktor ist eine Methode, die in der Klasse definiert ist, für die sie gilt. Java-Konstruktoren können Überladungen verwenden, um alternatives Verhalten bereitzustellen. Konstruktoren in Java können auch Vererbung verwenden, um Code wiederzuverwenden.





Warum brauchen Sie überhaupt Konstrukteure?

Konstruktoren sind eine tragende Säule der objektorientierten Programmierung, und Java ist keine Ausnahme. Dieses Beispiel zeigt, wie Sie eine einfache Circle-Klasse mit einer Dateneigenschaft und einer Methode definieren können:





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

Sie können dann eine Instanz dieser Klasse erstellen und mit ihr interagieren:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

Aber das ist weniger bequem und robust, als es sein könnte. Es ist eine gute objektorientierte Praxis, Daten zu kapseln, um sie vor unbefugtem Zugriff zu schützen:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

Jetzt kann der Anrufcode die setRadius -Methode und müssen sich nicht um ihre Implementierungsdetails kümmern:

müssen ram-sticks zusammenpassen?
Circle c = new Circle();
c.setRadius(2);

Konstruktoren bieten eine noch bessere Möglichkeit, ein Objekt beim Erstellen mit Daten zu versorgen. Sie werden sehr häufig zur Initialisierung von Eigenschaften verwendet, wie z Radius Hier.





Beispiele für einfache Konstruktoren

Der einfachste Konstruktor ist einer ohne Argumente, der nichts tut:

public class Circle {
public Circle() {}
}

Siehe auch: Erfahren Sie, wie Sie Klassen in Java erstellen





Wenn Sie keinen Konstruktor definieren, stellt Java einen Standardkonstruktor bereit, der sich genauso verhält.

Beachten Sie ein paar Dinge:

  1. Der Name des Konstruktors stimmt mit dem Klassennamen überein.
  2. Dieser Konstruktor verwendet die öffentlich Zugriffsmodifizierer, damit jeder andere Code ihn aufrufen kann.
  3. Ein Konstruktor enthält keinen Rückgabetyp. Im Gegensatz zu anderen Methoden können Konstruktoren keinen Wert zurückgeben.

Konstruktoren führen normalerweise eine Art Initialisierung durch. Beachten Sie, dass der obige Code den Radiuswert nicht initialisiert. In diesem Fall wird die Sprache automatisch auf Null gesetzt. Diese Klasse erwartet, dass ein Benutzer verwendet setRadius() . Um einen nützlicheren Standard als 0 zu verwenden, können Sie ihn innerhalb des Konstruktors zuweisen:

public class Circle {
public Circle() { radius = 1; }
}

Kreise, die mit dieser Klasse erstellt wurden, haben jetzt zumindest eine tatsächliche Fläche! Der Anrufer kann weiterhin verwenden setRadius() einen anderen Radius als 1 bereitzustellen. Aber der Konstrukteur kann noch freundlicher sein:

public class Circle {
public Circle(double r) { radius = r; }
}

Jetzt können Sie von Geburt an Kreise mit einem bestimmten Radius erstellen:

So versetzen Sie das iPhone 7 in den Wiederherstellungsmodus
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Dies ist eine sehr häufige Verwendung für Konstrukteure. Sie werden sie häufig verwenden, um Variablen mit Parameterwerten zu initialisieren.

Konstruktor-Überladung

Sie können mehr als einen Konstruktor in einer Klassendefinition angeben:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

Dies gibt aufrufendem Code die Wahl, wie Objekte erstellt werden sollen:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

Mit einem etwas komplexeren Circle können Sie interessantere Konstrukteure erkunden. Diese Version speichert ihre Position:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Sie können jetzt einen Kreis ohne Argumente, einen einzelnen Radius oder x- und y-Koordinaten neben dem Radius erstellen. Dies ist die gleiche Art von Überladung, die Java für jede Methode unterstützt.

Konstruktorverkettung

Wie wäre es, einen Kreis basierend auf einem anderen zu erstellen? Dies würde uns die Möglichkeit geben, Kreise einfach zu kopieren. Beachten Sie den folgenden Block:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

Dies wird funktionieren, aber es wiederholt einige Codes unnötig. Da die Circle-Klasse bereits über einen Konstruktor verfügt, der die einzelnen Eigenschaften behandelt, können Sie diesen stattdessen mit dem aufrufen Dies Stichwort:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

Dies ist eine Form der Konstruktorverkettung, bei der ein Konstruktor von einem anderen aufgerufen wird. Es verwendet weniger Code und hilft, einen Vorgang zu zentralisieren, anstatt ihn zu duplizieren.

Aufruf des übergeordneten Konstruktors

Die andere Form der Konstruktorverkettung tritt auf, wenn ein Konstruktor einen Konstruktor seiner Elternklasse aufruft. Dies kann entweder explizit oder implizit sein. Um einen übergeordneten Konstruktor explizit aufzurufen, verwenden Sie den Super Stichwort:

super(x, y);

Stellen Sie sich eine Shape-Klasse vor, die als übergeordnetes Element des Circle fungiert:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

Es übernimmt die gemeinsame Positionierung für alle Formen, da dies die Funktionalität ist, die alle gemeinsam haben. Jetzt kann die Circle-Klasse die Positionsbehandlung an ihre übergeordnete Klasse delegieren:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

Superklasse-Konstruktion ist ein sehr wichtiger Aspekt von Vererbung auf Java . Die Sprache erzwingt es standardmäßig, wenn Sie nicht explizit aufrufen Super in Ihren Konstrukteuren.

Zugriffsmodifikatoren für Konstruktoren

Konstruktoren können einen Zugriffsmodifizierer in ihre Signatur aufnehmen. Wie andere Methoden definiert dies, welche Arten von Aufrufern auf den Konstruktor zugreifen können:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

Dies ist ein komplizierteres Beispiel, also achten Sie darauf, es zu verstehen:

  • Die Klasse ist nicht abstrakt, daher ist es möglich, von ihr zu instanziieren.
  • Der Konstruktor ist privat, sodass nur diese Klasse selbst eine neue Instanz erstellen kann.
  • Über eine statische Eigenschaft und Methode macht die Klasse eine einzelne, eindeutige Instanz von sich selbst für Aufrufer verfügbar.

Verwenden von Konstruktoren in Java zum Erstellen von Objekten

Konstruktoren sind für die objektorientierte Programmierung von entscheidender Bedeutung. Sie ermöglichen es Ihnen, Objekte zu erstellen, was unerlässlich ist!

In Java sehen Konstruktoren aus wie andere Methoden und funktionieren ähnlich. Sie sollten sich an die Sonderregeln für Standardkonstruktoren, Überladung und Konstruktorverkettung erinnern. Wenn Konstruktoren neu für Sie sind, sollten Sie sich über die anderen grundlegenden Java-Konzepte informieren, die Sie zu Beginn lernen sollten.

Teilen Teilen Tweet Email 10 grundlegende Java-Konzepte, die Sie beim Einstieg lernen sollten

Egal, ob Sie eine GUI schreiben, serverseitige Software oder eine mobile Anwendung mit Android entwickeln, das Erlernen von Java wird Ihnen gute Dienste leisten. Hier sind einige grundlegende Java-Konzepte, die Ihnen den Einstieg erleichtern.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Java
  • Codierungstipps
Über den Autor Bobby Jack(58 veröffentlichte Artikel)

Bobby ist ein Technologie-Enthusiast, der fast zwei Jahrzehnte lang als Software-Entwickler gearbeitet hat. Er hat eine Leidenschaft für Spiele, arbeitet als Rezensionsredakteur beim Switch Player Magazine und vertieft sich in alle Aspekte des Online-Publishing und der Webentwicklung.

wie finde ich Informationen über jemanden
Mehr von Bobby Jack

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren