Java-konstruktørmetoden

Lag et objekt med en Java-konstruktør

Ung mann bruker den bærbare datamaskinen for å prøve å løse problemet med kode

Emilija Manevska / Getty Images





En Java-konstruktør oppretter en ny forekomst av et allerede definert objekt. Denne artikkelen diskuterer hvordan du bruker Java-konstruktørmetoder for å lage et Person-objekt.

Merk: Du må lage to filer i samme mappe for dette eksemplet: Person.java definerer Person-klassen, og PersonExample.java inneholder hovedmetoden som lager personobjekter.



Konstruktørmetoden

La oss starte med å lage en Person-klasse som har fire private felt: fornavn, etternavn, adresse og brukernavn. Disse feltene er private variabler og sammen utgjør verdiene deres tilstanden til et objekt. Vi har også lagt til de enkleste konstruktørmetodene:

|_+_||_+_|

Konstruktørmetoden ligner på alle andre offentlige metoder, bortsett fra at den deler samme navn som klassen, og den kan ikke returnere en verdi. Den kan ha ingen, én eller mange parametere.



For øyeblikket gjør konstruktørmetoden vår ingenting i det hele tatt, og det er et godt tidspunkt å vurdere hva dette betyr for starttilstanden til Person-objektet. Hvis vi lot ting være som de er, eller vi ikke inkluderte en konstruktørmetode i Person-klassen vår (i Java du kan definere en klasse uten en), så ville feltene ikke ha noen verdier - og vi vil absolutt at vår person skal ha et navn og adresse i tillegg til andre egenskaper. Hvis du tror det er en sjanse for at objektet ditt kanskje ikke blir brukt som du forventer og feltene kanskje ikke initialiseres når objektet opprettes, må du alltid definere dem med en standardverdi:

|_+_||_+_|

Normalt, for å sikre at en konstruktørmetode er nyttig, vil vi designe den for å forvente parametere. Verdiene som sendes gjennom disse parameterne kan brukes til å angi verdiene til de private feltene:

|_+_||_+_|

Vår konstruktørmetode forventer nå at verdiene til fire strenger sendes til den. De brukes deretter til å angi den opprinnelige tilstanden til objektet. Vi har også lagt til en ny metode kalt displayPersonDetails() for å gjøre det mulig for oss å se tilstanden til objektet etter at det er opprettet.

Kaller Konstruktørmetoden

I motsetning til andre metoder for et objekt, må konstruktørmetoden kalles ved å bruke nøkkelordet 'ny':



|_+_||_+_|

Her er hva vi gjorde:

  1. For å lage den nye forekomsten av Person-objektet, definerer vi først en variabel av typen Person som skal holde objektet. I dette eksemplet har vi kalt det dave .
  2. På den andre siden av likhetstegnet kaller vi konstruktørmetoden til Person-klassen vår og sender den fire strengverdier. Vår konstruktørmetode vil ta disse fire verdiene og sette starttilstanden til Person-objektet til å være: fornavn = 'Dave', etternavn = 'Davidson', adresse = '12 Main St', brukernavn = 'DDavidson'.

Legg merke til hvordan vi har byttet til Java-hovedklassen for å kalle Person-objektet. Når du arbeider med objekter, vil programmer spenne flere .java-filer . Pass på at du lagrer dem i samme mappe. For å kompilere og kjøre programmet, kompilerer og kjører du bare Java hovedklassen fil (dvs. PersonExample.java ). Java-kompilatoren er smart nok til å innse at du vil kompilere Person.java filen også fordi den kan se at du har brukt den i PersonExample-klassen.



Navngivning av parametere

Java-kompilatoren blir forvirret hvis parametrene til konstruktørmetoden har samme navn som de private feltene. I dette eksemplet kan du se at vi har skilt mellom dem ved å sette parametrene foran med ordet 'person'. Det er verdt å nevne at det er en annen måte. Vi kan bruke «dette» søkeordet i stedet:

|_+_||_+_|

Nøkkelordet 'this' forteller Java-kompilatoren at variabelen som skal tildeles verdien er den som er definert av klassen, ikke parameteren. Det er et spørsmål om programmeringsstil, men denne metoden hjelper oss med å definere konstruktørparametere uten å måtte bruke flere navn.



Mer enn én konstruktørmetode

Når du designer objektklassene dine, er du ikke begrenset til å bruke bare én konstruktørmetode. Du kan bestemme at det er et par måter et objekt kan initialiseres på. Den eneste begrensningen for å bruke mer enn én konstruktørmetode er at parametrene må være forskjellige.

Tenk deg at på det tidspunktet vi oppretter Person-objektet, kjenner vi kanskje ikke brukernavnet. La oss legge til en ny konstruktørmetode som setter tilstanden til Person-objektet med kun fornavn, etternavn og adresse:



|_+_||_+_|

Merk at den andre konstruktørmetoden også kalles 'Person' og den returnerer heller ikke en verdi. Den eneste forskjellen mellom den og den første konstruktørmetoden er parametrene - denne gangen forventer den bare tre strengverdier: fornavn, etternavn og adresse.

Vi kan nå lage personobjekter på to forskjellige måter:

|_+_||_+_|

Person dave opprettes med fornavn, etternavn, adresse og brukernavn. Person jim, vil imidlertid ikke få et brukernavn, dvs. brukernavnet vil være den tomme strengen: brukernavn = ''.

En rask oppsummering

Konstruktørmetoder kalles bare når en ny forekomst av et objekt opprettes. De:

  • Må ha samme navn som klassen
  • Ikke returner en verdi
  • Kan ha ingen, en eller mange parametere
  • Kan nummerere mer enn én så lenge hver konstruktørmetode har et annet sett med parametere
  • Kan ha parameternavn det samme som de private feltene så lenge nøkkelordet 'dette' brukes
  • Kalles ved å bruke det 'nye' søkeordet