De Java-constructormethode

Een Java-constructor maakt een nieuwe instantie van een al gedefinieerd object. In dit artikel wordt beschreven hoe u Java-constructormethoden kunt gebruiken om een ​​Person-object te maken.

Notitie: U moet voor dit voorbeeld twee bestanden in dezelfde map maken: Person.java definieert de klasse Persoon, en PersonExample.java bevat de hoofdmethode die Person-objecten maakt.

De constructormethode

Laten we beginnen met het maken van een klasse Person met vier privévelden: voornaam, achternaam, adres en gebruikersnaam. Deze velden zijn privévariabelen en samen vormen hun waarden de status van een object. We hebben ook de eenvoudigste constructormethoden toegevoegd:

 public class persoon 
private String voornaam;
private String achternaam;
privé tekenreeksadres;
privé String gebruikersnaam;
// De constructormethode
openbare persoon ()




De constructormethode is vergelijkbaar met elke andere openbare methode, behalve dat deze dezelfde naam heeft als de klasse en geen waarde kan retourneren. Het kan geen, één of veel parameters hebben.

Momenteel doet onze constructormethode helemaal niets, en het is een goed moment om te overwegen wat dit betekent voor de initiële status van het Person-object. Als we dingen laten zoals ze zijn of we hebben geen constructormethode in onze Person-klasse opgenomen (in Java kunt u een klasse zonder een definiëren), dan zouden de velden geen waarden hebben - en we willen zeker dat onze persoon een naam heeft en adres evenals andere kenmerken. Als u denkt dat uw object mogelijk niet wordt gebruikt zoals u verwacht en de velden mogelijk niet worden geïnitialiseerd wanneer het object wordt gemaakt, definieer ze dan altijd met een standaardwaarde:

 public class persoon 
private String firstName = "";
private String lastName = "";
private String address = "";
private String gebruikersnaam = "";
// De constructormethode
openbare persoon ()




Normaal gesproken zouden we, om ervoor te zorgen dat een constructormethode nuttig is, parameters verwachten. De waarden die door deze parameters worden doorgegeven, kunnen worden gebruikt om de waarden van de privévelden in te stellen:

 public class persoon 
private String voornaam;
private String achternaam;
privé tekenreeksadres;
privé String gebruikersnaam;
// De constructormethode
public Person (String personFirstname, String personLastName, String personAddress, String personUsername)

firstName = personFirstName;
lastName = personLastName;
adres = persoonAdres;
gebruikersnaam = persoon Gebruikersnaam;

// Een methode om de status van het object op het scherm weer te geven
public void displayPersonDetails ()

System.out.println ("Name:" + firstName + "" + lastName);
System.out.println ("Address:" + adres);
System.out.println ("Gebruikersnaam:" + gebruikersnaam);



Onze constructormethode verwacht nu dat de waarden van vier tekenreeksen eraan worden doorgegeven. Ze worden vervolgens gebruikt om de begintoestand van het object in te stellen. We hebben ook een nieuwe methode toegevoegd, genaamd displayPersonDetails () zodat we de staat van het object kunnen zien nadat het is gemaakt.

Aanroepen van de constructormethode

In tegenstelling tot andere methoden van een object, moet de constructormethode worden aangeroepen met het trefwoord "new":

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



Dit is wat we deden:

  1. Om de nieuwe instantie van het Person-object te maken, definiëren we eerst een variabele van het type Person dat het object zal bevatten. In dit voorbeeld hebben we het genoemd dave.
  2. Aan de andere kant van het isgelijkteken noemen we de constructormethode van onze klasse Person en geven deze vier tekenreekswaarden door. Onze constructormethode neemt die vier waarden en stelt de initiële status van het Person-object in: firstName = "Dave", lastName = "Davidson", address = "12 Main St", gebruikersnaam = "DDavidson".

Merk op hoe we zijn overgeschakeld naar de Java-hoofdklasse om het Person-object aan te roepen. Wanneer u met objecten werkt, omvatten programma's meerdere .java-bestanden. Zorg ervoor dat u ze in dezelfde map opslaat. Om het programma te compileren en uit te voeren, compileert en voert u eenvoudig het Java-hoofdbestand uit (d.w.z.., PersonExample.java). De Java-compiler is slim genoeg om te beseffen dat u de wilt compileren Person.java ook omdat het kan zien dat u het hebt gebruikt in de klasse PersonExample.

Naamgeving van parameters

De Java-compiler raakt in de war als de parameters van de constructormethode dezelfde namen hebben als de privévelden. In dit voorbeeld kunt u zien dat we onderscheid hebben gemaakt door de parameters te voorafgaan door het woord 'persoon'. Het is vermeldenswaard dat er een andere manier is. We kunnen in plaats daarvan het trefwoord "dit" gebruiken:

 // De constructormethode
public Person (String voornaam, String achternaam, Stringadres, String gebruikersnaam)

this.firstName = firstName;
this.lastName = achternaam;
this.address = adres;
this.username = gebruikersnaam;


Het trefwoord "this" vertelt de Java-compiler dat de variabele die de waarde moet krijgen, degene is die door de klasse is gedefinieerd, niet de parameter. Het is een kwestie van programmeerstijl, maar deze methode helpt ons constructorparameters te definiëren zonder dat we meerdere namen moeten gebruiken.

Meer dan één constructormethode

Bij het ontwerpen van uw objectklassen bent u niet beperkt tot het gebruik van slechts één constructormethode. U kunt beslissen dat er een aantal manieren zijn waarop een object kan worden geïnitialiseerd. De enige beperking bij het gebruik van meer dan één constructormethode is dat de parameters moeten verschillen.

Stel dat we op het moment dat we het Person-object maken, de gebruikersnaam mogelijk niet weten. Laten we een nieuwe constructormethode toevoegen die de status van het Person-object instelt met alleen de voornaam, achternaam en het adres:

 public class persoon 
private String voornaam;
private String achternaam;
privé tekenreeksadres;
privé String gebruikersnaam;
// De constructormethode
public Person (String voornaam, String achternaam, Stringadres, String gebruikersnaam)

this.firstName = firstName;
this.lastName = achternaam;
this.address = adres;
this.username = gebruikersnaam;

// De nieuwe constructormethode
public Person (String voornaam, String achternaam, Stringadres)

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

// Een methode om de status van het object op het scherm weer te geven
public void displayPersonDetails ()

System.out.println ("Name:" + firstName + "" + lastName);
System.out.println ("Address:" + adres);
System.out.println ("Gebruikersnaam:" + gebruikersnaam);



Merk op dat de tweede constructormethode ook "Persoon" wordt genoemd en ook geen waarde retourneert. Het enige verschil tussen het en de eerste constructormethode zijn de parameters - deze keer verwacht het alleen drie tekenreekswaarden: voornaam, achternaam en adres.

We kunnen nu Person-objecten op twee verschillende manieren maken:

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



Persoon dave wordt gemaakt met een voornaam, achternaam, adres en gebruikersnaam. Persoon jim, krijgt echter geen gebruikersnaam, d.w.z. de gebruikersnaam is de lege string: gebruikersnaam = "".

Een korte samenvatting

Constructormethoden worden alleen aangeroepen wanneer een nieuwe instantie van een object wordt gemaakt. Ze:

  • Moet dezelfde naam hebben als de klas
  • Retourneer geen waarde
  • Kan geen, één of veel parameters hebben
  • Kan meerdere nummers bevatten, zolang elke constructormethode een andere set parameters heeft
  • Kan parameternamen hebben die hetzelfde zijn als de privévelden, zolang het trefwoord "this" wordt gebruikt
  • Worden genoemd met behulp van het "nieuwe" trefwoord