Die Java-Konstruktormethode

Ein Java-Konstruktor erstellt eine neue Instanz eines bereits definierten Objekts. Dieser Artikel beschreibt die Verwendung von Java-Konstruktormethoden zum Erstellen eines Person-Objekts.

Hinweis: Für dieses Beispiel müssen Sie zwei Dateien im selben Ordner erstellen: Person.java definiert die Personenklasse und PersonExample.java Enthält die Hauptmethode, mit der Personenobjekte erstellt werden.

Die Konstruktormethode

Beginnen wir mit der Erstellung einer Person-Klasse mit vier privaten Feldern: Vorname, Nachname, Adresse und Benutzername. Diese Felder sind private Variablen und zusammen bilden ihre Werte den Status eines Objekts. Wir haben auch die einfachste Konstruktormethode hinzugefügt:

 public class Person 
private String firstName;
private String lastName;
private String-Adresse;
privater String-Benutzername;
// Die Konstruktormethode
öffentliche Person ()




Die Konstruktormethode ähnelt jeder anderen öffentlichen Methode mit dem Unterschied, dass sie denselben Namen wie die Klasse hat und keinen Wert zurückgeben kann. Es kann keinen, einen oder mehrere Parameter haben.

Derzeit führt unsere Konstruktormethode überhaupt nichts aus, und es ist ein guter Zeitpunkt zu überlegen, was dies für den Anfangszustand des Person-Objekts bedeutet. Wenn wir die Dinge unverändert lassen oder keine Konstruktormethode in unsere Person-Klasse aufnehmen (in Java können Sie eine Klasse ohne eine definieren), haben die Felder keine Werte - und wir möchten mit Sicherheit, dass unsere Person einen Namen hat und Adresse sowie andere Eigenschaften. Wenn Sie der Meinung sind, dass Ihr Objekt möglicherweise nicht wie erwartet verwendet wird und die Felder beim Erstellen des Objekts möglicherweise nicht initialisiert werden, definieren Sie sie immer mit einem Standardwert:

 public class Person 
private String firstName = "";
private String lastName = "";
private String address = "";
private String username = "";
// Die Konstruktormethode
öffentliche Person ()




Um sicherzustellen, dass eine Konstruktormethode nützlich ist, würden wir sie normalerweise so entwerfen, dass sie Parameter erwartet. Die Werte, die über diese Parameter übergeben werden, können zum Festlegen der Werte der privaten Felder verwendet werden:

 public class Person 
private String firstName;
private String lastName;
private String-Adresse;
privater String-Benutzername;
// Die Konstruktormethode
public Person (String personFirstname, String personLastName, String personAddress, String personUsername)

firstName = personFirstName;
lastName = personLastName;
Adresse = PersonAdresse;
Benutzername = personUsername;

// Eine Methode, um den Status des Objekts auf dem Bildschirm anzuzeigen
public void displayPersonDetails ()

System.out.println ("Name:" + Vorname + "" + Nachname);
System.out.println ("Adresse:" + Adresse);
System.out.println ("Benutzername:" + Benutzername);



Unsere Konstruktormethode erwartet nun, dass die Werte von vier Zeichenfolgen an sie übergeben werden. Sie werden dann verwendet, um den Anfangszustand des Objekts festzulegen. Wir haben auch eine neue Methode namens hinzugefügt displayPersonDetails () Damit wir den Status des Objekts sehen können, nachdem es erstellt wurde.

Aufruf der Konstruktormethode

Im Gegensatz zu anderen Methoden eines Objekts muss die Konstruktormethode mit dem Schlüsselwort "new" aufgerufen werden:

 public class PersonExample 
public static void main (String [] args)
Person Dave = neue Person ("Dave", "Davidson", "12 Main St.", "DDavidson");
dave.displayPersonDetails ();



Folgendes haben wir getan:

  1. Um die neue Instanz des Person-Objekts zu erstellen, definieren wir zunächst eine Variable vom Typ Person, die das Objekt enthält. In diesem Beispiel haben wir es genannt Dave.
  2. Auf der anderen Seite des Gleichheitszeichens rufen wir die Konstruktormethode unserer Person-Klasse auf und übergeben ihr vier Zeichenfolgenwerte. Unsere Konstruktormethode nimmt diese vier Werte und setzt den Anfangszustand des Person-Objekts auf: firstName = "Dave", lastName = "Davidson", address = "12 Main St", username = "DDavidson".

Beachten Sie, wie wir zur Java-Hauptklasse gewechselt sind, um das Person-Objekt aufzurufen. Wenn Sie mit Objekten arbeiten, werden Programme mehrere .java-Dateien umfassen. Stellen Sie sicher, dass Sie sie im selben Ordner speichern. Um das Programm zu kompilieren und auszuführen, kompilieren Sie einfach die Java - Hauptklassendatei (d. H., PersonExample.java). Der Java-Compiler ist schlau genug, um zu erkennen, dass Sie das kompilieren möchten Person.java Datei auch, weil es sehen kann, dass Sie es in der PersonExample-Klasse verwendet haben.

Benennung von Parametern

Der Java-Compiler ist verwirrt, wenn die Parameter der Konstruktormethode dieselben Namen wie die privaten Felder haben. In diesem Beispiel können Sie erkennen, dass wir sie voneinander unterschieden haben, indem Sie den Parametern das Wort "Person" voranstellen. Erwähnenswert ist, dass es auch anders geht. Wir können stattdessen das Schlüsselwort "this" verwenden:

 // Die Konstruktormethode
öffentliche Person (Zeichenfolge Vorname, Zeichenfolge Nachname, Zeichenfolge Adresse, Zeichenfolge Benutzername)

this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.username = username;


Das Schlüsselwort "this" teilt dem Java-Compiler mit, dass die Variable, der der Wert zugewiesen werden soll, von der Klasse und nicht vom Parameter definiert wird. Es ist eine Frage des Programmierstils, aber diese Methode hilft uns, Konstruktorparameter zu definieren, ohne mehrere Namen verwenden zu müssen.

Mehr als eine Konstruktormethode

Beim Entwerfen Ihrer Objektklassen können Sie nicht nur eine Konstruktormethode verwenden. Sie können auf verschiedene Arten entscheiden, wie ein Objekt initialisiert werden kann. Die einzige Einschränkung bei der Verwendung mehrerer Konstruktormethoden besteht darin, dass sich die Parameter unterscheiden müssen.

Stellen Sie sich vor, dass wir zum Zeitpunkt der Erstellung des Person-Objekts den Benutzernamen möglicherweise nicht kennen. Fügen wir eine neue Konstruktormethode hinzu, die den Status des Person-Objekts nur unter Verwendung von Vorname, Nachname und Adresse festlegt:

 public class Person 
private String firstName;
private String lastName;
private String-Adresse;
privater String-Benutzername;
// Die Konstruktormethode
öffentliche Person (Zeichenfolge Vorname, Zeichenfolge Nachname, Zeichenfolge Adresse, Zeichenfolge Benutzername)

this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.username = username;

// Die neue Konstruktormethode
öffentliche Person (Zeichenfolge Vorname, Zeichenfolge Nachname, Zeichenfolge Adresse)

this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.username = "";

// Eine Methode, um den Status des Objekts auf dem Bildschirm anzuzeigen
public void displayPersonDetails ()

System.out.println ("Name:" + Vorname + "" + Nachname);
System.out.println ("Adresse:" + Adresse);
System.out.println ("Benutzername:" + Benutzername);



Beachten Sie, dass die zweite Konstruktormethode auch "Person" heißt und keinen Wert zurückgibt. Der einzige Unterschied zu der ersten Konstruktormethode sind die Parameter - diesmal werden nur diese erwartet drei Zeichenfolgenwerte: Vorname, Nachname und Adresse.

Wir können nun Personenobjekte auf zwei verschiedene Arten erstellen:

 public class PersonExample 
public static void main (String [] args)
Person Dave = neue Person ("Dave", "Davidson", "12 Main St.", "DDavidson");
Person jim = neue Person ("Jim", "Davidson", "15 Kings Road");
dave.displayPersonDetails ();
jim.displayPersonDetails ();



Person Dave wird mit einem Vor- und Nachnamen, einer Adresse und einem Benutzernamen erstellt. Person Jim, erhält jedoch keinen Benutzernamen, d. h. der Benutzername ist die leere Zeichenfolge: username = "".

Eine kurze Zusammenfassung

Konstruktormethoden werden nur aufgerufen, wenn eine neue Instanz eines Objekts erstellt wird. Sie:

  • Muss den gleichen Namen wie die Klasse haben
  • Geben Sie keinen Wert zurück
  • Kann keinen, einen oder viele Parameter haben
  • Kann mehr als eine Nummer haben, solange jede Konstruktormethode einen anderen Parametersatz hat
  • Kann dieselben Parameternamen wie die privaten Felder haben, solange das Schlüsselwort "this" verwendet wird
  • Werden mit dem Schlüsselwort "new" aufgerufen