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?
Konstrukteure sind eine tragende Säule von Objekt orientierte Programmierung, und Java ist keine Ausnahme. Dieses Beispiel zeigt, wie Sie eine einfache Circle-Klasse mit einer Dateneigenschaft und einer Methode definieren können:
Kreis der öffentlichen Klasse {
öffentlicher doppelter Radius;
public double area() { return 3.14159 * Radius * Radius; }
}
Sie können dann eine Instanz dieser Klasse erstellen und mit ihr interagieren:
Kreis c = neuer Kreis();
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:
Kreis der öffentlichen Klasse {
Privatgelände doppelter 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:
Kreis c = neuer Kreis();
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:
Kreis der öffentlichen Klasse {
öffentlicher Kreis() {}
}
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:
- Der Name des Konstruktors stimmt mit dem Klassennamen überein.
- Dieser Konstruktor verwendet die Öffentlichkeit Zugriffsmodifizierer, damit jeder andere Code ihn aufrufen kann.
- 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:
Kreis der öffentlichen Klasse {
öffentlicher Kreis () { 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. Aber der Konstrukteur kann noch freundlicher sein:
Kreis der öffentlichen Klasse {
öffentlicher Kreis (doppeltes r) { Radius = r; }
}
Jetzt können Sie von Geburt an Kreise mit einem bestimmten Radius erstellen:
Kreis c = neuer Kreis (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:
öffentlicher Kreis () { Radius = 1; }
öffentlicher Kreis (doppeltes r) { Radius = r; }
Dies gibt aufrufendem Code die Wahl, wie Objekte erstellt werden:
Kreis c1 = neuer Kreis (2);
Kreis c2 = neuer Kreis();
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:
Kreis der öffentlichen Klasse {
öffentliches Doppel x, y, Radius;
öffentlicher Kreis () { Radius = r; }
öffentlicher Kreis (doppeltes r) { Radius = r; }
öffentlicher Kreis (doppeltes x, doppeltes y, doppeltes r) {
dies.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:
öffentlicher Kreis (Kreis c) {
dies.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 aufrufen diese Stichwort:
öffentlicher Kreis (Kreis c) {
dies (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:
öffentliche Klasse Form {
doppeltes x, y;
öffentliche Form (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:
Kreis der öffentlichen Klasse erweitert Form {
doppelter Radius;
öffentlicher Kreis (double r) { super (0, 0); Radius = r; }
öffentlicher Kreis (doppeltes x, doppeltes y, doppeltes 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:
öffentlicher Klassentest {
privater statischer Test uniqueInstance = new Test();
privater Test() { }
öffentlicher statischer Test getInstance() {
Rückgabe einzigartiger Instanz;
}
}
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.
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
- Programmierung
- Java
- Codierungstipps
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.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.