Java konstruktor stvara novu instancu već definiranog objekta. Ovaj članak govori o tome kako koristiti Java konstruktor metode za stvaranje Person objekta.
Bilješka: Za ovaj primjer morate stvoriti dvije datoteke u istoj mapi: Person.java definira klasu Osobe i PersonExample.java sadrži glavna metoda što stvara Person objekte.
Konstruktorska metoda
Započnimo kreiranjem klase Person koja ima četiri privatna polja: firstName, lastName, adresa i korisničko ime. Ova polja su privatne varijable i zajedno njihove vrijednosti čine stanje objekta. Dodali smo i najjednostavnije konstruktorske metode:
Osoba u javnoj klasi {
privatni niz Npr;
privatno String lastName;
privatna string adresa;
privatno korisničko ime stringa;
// Konstrukcijska metoda
javna osoba ()
{
}
}
Metoda konstruktora slična je bilo kojoj javnoj metodi, osim što dijeli isti naziv kao i klasa i ne može vratiti vrijednost. Može imati nijedan, jedan ili više parametara.
Trenutno naša konstruktorska metoda uopće ne radi ništa i dobro je vrijeme da razmislimo što to znači za početno stanje objekta Osoba. Ako smo stvari ostavili onakvima kakve jesu ili nismo uključili konstruktorski metod u naš razred Person (u
Java možete definirati klasu bez i jedne), onda polja ne bi imala vrijednosti - a mi sigurno želimo da naša osoba ima ime i adresu kao i druge karakteristike. Ako mislite da postoji mogućnost da vaš objekt neće biti korišten onako kako očekujete i polja se neće inicijalizirati kada se objekt stvori, uvijek ih definirajte zadanom vrijednošću:Osoba u javnoj klasi {
privatni niz PrvoName = "";
privatni niz lastName = "";
privatna string string = "";
privatno korisničko ime string = "";
// Konstrukcijska metoda
javna osoba ()
{
}
}
Normalno, kako bi se osigurala korisnost konstruktorske metode dizajnirali bismo je da očekuje parametre. Vrijednosti prosljeđene kroz ove parametre mogu se koristiti za postavljanje vrijednosti privatnih polja:
Osoba u javnoj klasi {
privatni niz Npr;
privatno String lastName;
privatna string adresa;
privatno korisničko ime stringa;
// Konstrukcijska metoda
javna osoba (String personFirstname, String personLastName, String personAdres, String personUporabljeno ime)
{
firstName = personFirstName;
lastName = personLastName;
adresa = osoba adresa;
korisničko ime = osoba, korisničko ime;
}
// Metoda za prikaz stanja objekta na ekranu
javni nevažeći prikazPersonDetails ()
{
System.out.println ("Naziv:" + prvo ime + "" + prezime);
System.out.println ("Adresa:" + adresa);
System.out.println ("Korisničko ime:" + korisničko ime);
}
}
Naša konstruktorska metoda sada očekuje da će mu se preneti vrijednosti četiri niza. Zatim se koriste za postavljanje početnog stanja objekta. Dodali smo i novu metodu koja se zove displayPersonDetails () kako bi nam se omogućilo vidjeti stanje objekta nakon što je stvoren.
Pozivanje metode konstruktora
Za razliku od drugih metoda objekta, mora se pozvati metoda konstruktora pomoću ključne riječi "novo":
Javna klasa PersonExample {
javni statički void main (String [] args) {
Osoba dave = nova osoba ("Dave", "Davidson", "12 Main St.", "DDavidson");
dave.displayPersonDetails ();
}
}
Evo što smo učinili:
- Da bismo stvorili novu instancu objekta Person, najprije definiramo varijablu tipa Person koja će držati objekt. U ovom primjeru nazvali smo ga dave.
- S druge strane znaka jednake, zovemo konstruktorsku metodu naše klase Person i prosljeđujemo joj četiri niza vrijednosti. Naša konstruktorska metoda uzet će te četiri vrijednosti i postaviti početno stanje objekta Person u: firstName = "Dave", lastName = "Davidson", adresa = "12 Main St", korisničko ime = "DDavidson".
Primjetite kako smo prešli u glavnu klasu Java da bismo nazvali objekt Person. Kada radite s objektima, programi će se rasporediti više .java datoteka. Obavezno ih spremite u istu mapu. Za sastavljanje i pokretanje programa jednostavno sastavite i pokrenite Java glavna klasa datoteka (tj. PersonExample.java). Java kompajler je dovoljno pametan da shvati da želite sastaviti Person.java datoteku, jer može vidjeti da ste je koristili u klasi PersonExample.
Imenovanje parametara
Java prevoditelj se zbunjuje ako parametri metode konstruktora imaju jednaka imena kao i privatna polja. U ovom primjeru možete vidjeti da smo ih razlikovali prefiksom parametara riječju "osoba". Vrijedi spomenuti da postoji i drugi način. Umjesto toga možemo koristiti ključnu riječ "ovo":
// Konstrukcijska metoda
javna osoba (String firstName, String lastName, String adresa, String korisničko ime)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = korisničko ime;
}
Ključna riječ "ovo" kaže Java prevoditelju da je varijabla kojoj se dodjeljuje vrijednost ona koju definira klasa, a ne parametar. To je pitanje stila programiranja, ali ova metoda nam pomaže definirati parametre konstruktora bez upotrebe više imena.
Više od jedne konstruktorske metode
Kod dizajniranja klasa objekata, niste ograničeni na korištenje samo jedne konstruktorske metode. Možete odlučiti da postoji nekoliko načina na koji se objekt može inicijalizirati. Jedino ograničenje kod korištenja više metoda konstruktora je to što se parametri moraju razlikovati.
Zamislite da u vrijeme kada stvaramo objekt Person možda ne znamo korisničko ime. Dodajmo novu konstruktivnu metodu koja postavlja stanje objekta Person koristeći samo firstName, lastName i adresu:
Osoba u javnoj klasi {
privatni niz Npr;
privatno String lastName;
privatna string adresa;
privatno korisničko ime stringa;
// Konstrukcijska metoda
javna osoba (String firstName, String lastName, String adresa, String korisničko ime)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = korisničko ime;
}
// Nova metoda konstruktora
javna osoba (String firstName, String lastName, String address)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = adresa;
this.username = "";
}
// Metoda za prikaz stanja objekta na ekranu
javni nevažeći prikazPersonDetails ()
{
System.out.println ("Naziv:" + prvo ime + "" + prezime);
System.out.println ("Adresa:" + adresa);
System.out.println ("Korisničko ime:" + korisničko ime);
}
}
Imajte na umu da se druga konstruktorska metoda također naziva "Osoba", a također ne vraća vrijednost. Jedina razlika između njega i prve metode konstruktora su parametri - ovaj put to očekuje samo tri vrijednosti niza: firstName, lastName i adresa.
Sada možemo stvoriti Person objekte na dva različita načina:
Javna klasa PersonExample {
javni statički void main (String [] args) {
Osoba dave = nova osoba ("Dave", "Davidson", "12 Main St.", "DDavidson");
Osoba jim = nova osoba ("Jim", "Davidson", "15 kraljevih cesta");
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}
Osoba dave bit će stvoreni s imenomName, lastName, adresom i korisničkim imenom. Osoba Jim međutim, neće dobiti korisničko ime, tj. korisničko ime će biti prazan niz: korisničko ime = "".
Brzi pregled
Konstruktivne metode se pozivaju samo kada se stvori nova instanca objekta. Oni:
- Mora imati isti naziv kao i klasa
- Ne vraćajte vrijednost
- Može imati nijedan, jedan ili mnogo parametara
- Može brojati više od jednog ako svaka metoda konstruktora ima različit skup parametara
- Mogu imati imena parametara isto kao i privatna polja sve dok se koristi ključna riječ "ovaj"
- Zovu se pomoću ključne riječi "novo"