De Java Constructor-methode

Een object maken met een Java-constructor

Jonge man die zijn laptop gebruikt om te proberen een probleem met code op te lossen

Emilija Manevska / Getty Images





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

Opmerking: Voor dit voorbeeld moet u twee bestanden in dezelfde map maken: Persoon.java definieert de klasse Persoon, en PersoonVoorbeeld.java bevat de belangrijkste methode: die Persoonsobjecten creëert.



De Constructor-methode

Laten we beginnen met het maken van een persoonsklasse die vier privévelden heeft: 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:

|__+_||_+_|

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 meerdere 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 de dingen laten zoals ze zijn of als we geen constructormethode hebben opgenomen in onze klasse Person (in Java je kunt een klasse zonder één definiëren), dan zouden de velden geen waarden hebben - en we willen zeker dat onze persoon een naam en adres heeft, evenals andere kenmerken. Als u denkt dat er een kans is dat uw object niet wordt gebruikt zoals u verwacht en de velden mogelijk niet worden geïnitialiseerd wanneer het object wordt gemaakt, definieert u ze altijd met een standaardwaarde:

|__+_||_+_|

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

|__+_||_+_|

Onze constructormethode verwacht nu dat de waarden van vier strings eraan worden doorgegeven. Ze worden vervolgens gebruikt om de beginstatus van het object in te stellen. We hebben ook een nieuwe methode toegevoegd genaamd displayPersoonDetails() om ons in staat te stellen de staat van het object te zien nadat het is gemaakt.

De constructormethode aanroepen

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



|__+_||_+_|

Dit is wat we deden:

  1. Om de nieuwe instantie van het Persoon-object te maken, definiëren we eerst een variabele van het type Persoon die het object zal bevatten. In dit voorbeeld hebben we het genoemd dave .
  2. Aan de andere kant van het gelijkteken noemen we de constructormethode van onze Person-klasse en geven deze vier tekenreekswaarden door. Onze constructormethode neemt die vier waarden en stelt de beginstatus van het Person-object in op: 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, zullen programma's overspannen 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 de Java hoofdklasse bestand (d.w.z. PersoonVoorbeeld.java ). De Java-compiler is slim genoeg om te beseffen dat je de Persoon.java bestand ook omdat het kan zien dat u het in de PersonExample-klasse hebt gebruikt.



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 ze van elkaar hebben onderscheiden door de parameters vooraf te laten gaan door het woord 'persoon'. Het is vermeldenswaard dat er een andere manier is. We kunnen in plaats daarvan het trefwoord 'this' gebruiken:

|__+_||_+_|

Het 'this'-sleutelwoord vertelt de Java-compiler dat de variabele waaraan de waarde moet worden toegewezen, de variabele is die is gedefinieerd door de klasse, niet de parameter. Het is een kwestie van programmeerstijl, maar deze methode helpt ons om constructorparameters te definiëren zonder meerdere namen te hoeven gebruiken.



Meer dan één constructormethode

Bij het ontwerpen van uw objectklassen bent u niet beperkt tot het gebruik van slechts één constructormethode. U kunt besluiten 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 je voor dat we op het moment dat we het Person-object maken, de gebruikersnaam misschien niet weten. Laten we een nieuwe constructormethode toevoegen die de status van het Person-object instelt met alleen de firstName, lastName en het adres:



|__+_||_+_|

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

We kunnen nu persoonsobjecten op twee verschillende manieren maken:

|__+_||_+_|

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. Zij:

  • Moet dezelfde naam hebben als de klas
  • Geen waarde retourneren
  • Kan geen, één of . hebben veel parameters
  • Kan meer dan één nummeren, zolang elke constructormethode een andere set parameters heeft
  • Kan hebben parameternamen hetzelfde als de privévelden zolang het trefwoord 'this' wordt gebruikt
  • Worden aangeroepen met het trefwoord 'nieuwe'