So erstellen Sie Konstrukteurs in Java

EIN Konstruktor

wenn eine Instanz eines Objekts ist ein Block von Code, der in Java erstellt wird, aufgerufen wird. In vielerlei Hinsicht ist ein Konstruktor ähnlich einer Methode, aber einige Unterschiede bestehen:

  • Ein Konstruktor hat keinen Rückgabetyp.

  • Der Name des Konstruktors muss derselbe wie der Name der Klasse sein.

  • Im Gegensatz zu Methoden, Konstruktoren werden nicht als Mitglieder einer Klasse betrachtet. (Das ist nur wichtig, wenn es um die Erbschaft kommt.)

  • Ein Konstruktor aufgerufen wird, wenn eine neue Instanz eines Objekts erzeugt wird. In der Tat ist es das neue Schlüsselwort, das den Konstruktor aufruft. Nachdem das Objekt erstellt haben, können Sie den Konstruktor wieder nicht nennen.

Hier ist das Basisformat für einen Konstruktor Codierung:

Öffentlichkeit Klassenname (Parameter-Liste) [Wirft Ausnahme...] {Aussagen ...}

Das Schlüsselwort public gibt an, dass andere Klassen den Konstruktor zugreifen können. Das ist in der Regel, was Sie wollen, auch wenn Sie einen privaten Konstruktor zu erstellen möchten. Klassenname müssen die gleichen sein, wie der Name der Klasse, die den Konstruktor enthält. Sie Code, um die Parameterliste auf die gleiche Weise, dass Sie es für eine Methode codieren.

Beachten Sie auch, dass ein Konstruktor kann Ausnahmen auslösen, wenn es Situationen begegnet, dass es nicht aus wiederherstellen können.

Erstellen von Grundbauer

Die wohl häufigste Grund, einen Konstruktor für die Codierung ist die Anfangswerte für Klassenfelder zur Verfügung zu stellen, wenn Sie das Objekt erstellen. Angenommen, Sie haben eine Klasse namens Schauspieler haben, die Felder mit dem Namen Vorname und Nachname hat. Sie können einen Konstruktor für die Schauspieler-Klasse erstellen:

Öffentlichkeit Schauspieler (String zuerst, String letzte) {vorName = first-nachName = letzt}

Dann sind Sie eine Instanz der Schauspieler-Klasse erstellen, indem Sie diesen Konstruktor aufrufen:

Schauspieler a = new Schauspieler ( "Arnold", "Schwarzenegger") -

Ein neuer Schauspieler Objekt für Arnold Schwarzenegger wird erstellt.

Wie Methoden können Konstrukteure überlastet werden. Mit anderen Worten, können Sie mehr als einen Konstruktor für eine Klasse, vorausgesetzt sorgen, dass jeder Konstrukteur eine eindeutige Signatur hat. Hier ist ein weiterer Konstruktor für die Schauspieler-Klasse:

Öffentlichkeit Schauspieler (String zuerst, String zuletzt, boolean gut) {vorName = first-nachName = last-goodActor = gut-}

Dieser Konstruktor können Sie ein Schauspieler Objekt mit Informationen neben dem Namen des Darstellers zu erstellen:

Schauspieler a = new Schauspieler ( "Arnold", "Schwarzenegger", false) -

Erstellen Standardkonstruktoren

Jede Klasse hat ein Recht auf einen Konstruktor. Wenn Sie nicht über einen Konstruktor bereitstellen, ernennt Java für Sie kostenlos. Dieser kostenlose Konstruktor wird aufgerufen, die Standard-Konstruktor. Es werden keine Parameter übernehmen und nicht alles tun, aber es Ihre Klasse instanziiert werden nicht gestattet.

Somit werden die folgenden zwei Klassen identisch:

Class1 Öffentlichkeit {public Class1 () {}} public Class1 {}

Im ersten Beispiel erklärt der Klasse explizit einen Konstruktor, der keine Parameter akzeptieren und hat keine Aussagen in seinem Körper. Im zweiten Beispiel erstellt Java einen Standardkonstruktor, die genau wie der Konstruktor im ersten Beispiel gezeigt arbeitet.

Der Default-Konstruktor ist nicht erstellt, wenn Sie irgendwelche Konstrukteuren für die Klasse deklarieren. Als Ergebnis, wenn Sie einen Konstruktor deklarieren, die wollen akzeptiert Parameter und noch einen leeren Konstruktor haben (ohne Parameter und ohne Körper), müssen Sie explizit einen leeren Konstruktor für die Klasse deklarieren.

Ein Beispiel könnte diesen Punkt aufklären. Der folgende Code tut nicht kompilieren:

public class BadActorApp {public static void main (String [] args) {Schauspieler a = new Schauspieler () - // Fehler: nicht kompiliert}} Klasse Schauspieler {private String nachName-private String vorName-private boolean goodActor öffentlichen Darsteller (String zuletzt, String zuerst) {nachName = last-vorName = erster} public Darsteller (String zuletzt, String zuerst, boolean gut) {nachName = last-vorName = first-goodActor = gut-}}

Dieses Programm wird nicht kompiliert, da es nicht explizit einen Default-Konstruktor für den Schauspieler Klassen- bieten hat, weil es andere Konstrukteure liefert, wird der Standard-Konstruktor nicht automatisch generiert.

Der Aufruf andere Konstrukteure

Ein Konstruktor kann einen anderen Konstruktor der gleichen Klasse aufrufen, indem Sie das spezielle Schlüsselwort dies als ein Methodenaufruf. Diese Technik wird häufig verwendet, wenn Sie mehrere Konstrukteure haben, die aufeinander aufbauen.

Betrachten Sie diese Klasse:

public class Schauspieler {private String nachName-private String vorName-private boolean goodActor öffentlichen Darsteller (String zuletzt, String zuerst) {nachName = last-vorName = erster} public Darsteller (String zuletzt, String zuerst, boolean gut) {diese ( zuletzt, zuerst) -goodActor = gut-}}

Hier ist der zweite Konstruktor ruft den ersten Konstruktor die Felder Nachname und Vorname einzustellen. Dann setzt er auf das goodActor Feld.

Sie haben ein paar Einschränkungen, die dieses Schlüsselwort als Konstruktoraufrufs in Verwendung:

  • Sie können nur von einem Konstruktor in der ersten Anweisung anderen Konstruktor aufrufen. So kompilieren Sie den folgenden Code nicht:

    Öffentlichkeit Schauspieler (String zuletzt, String zuerst, boolean gut){ goodActor = gut- diese (letzte zuerst) - // Fehler: nicht kompiliert}

    Wenn Sie versuchen, eine Klasse mit diesem Konstruktor zu erstellen, erhalten Sie eine Meldung Anruf zu diesen Worten in Konstruktor erste Anweisung sein muss.

  • Jeder Konstruktor kann nur einen anderen Konstruktor aufrufen, aber Sie können Kette Bauer. Wenn eine Klasse drei Konstrukteuren hat, kann der erste Konstruktor die zweite nennen, was wiederum die dritte nennt.

  • Sie können keine Schleifen schaffen, in der Konstrukteurs-einander nennen. Hier ist eine Klasse, die nicht kompiliert werden:

    Klasse CrazyClass{private String firstString-private String secondString-public CrazyClass (String erste, String Sekunde){  dieses (erste) -  secondString = zweit-}public CrazyClass (String zuerst){  diese (erste, "default") - // Fehler: wird nicht// kompilieren}}

    Der erste Konstruktor beginnt, indem der zweite Konstruktors, die den ersten Konstruktor aufruft. Der Compiler beschwert sich, dass dieser Fehler eine rekursive Konstruktor-Aufruf ist und sich weigert, höflich, die Klasse zu kompilieren.

Wenn Sie nicht explizit einen Konstruktor in der ersten Zeile eines Konstruktor rufen Sie fügt Java-Code, der den Standard-Konstruktor der Basisklasse ruft automatisch - das heißt, die Klasse, dass diese Klasse erbt.

Menü