„Java“ konstruktorius sukuria naują jau apibrėžto objekto egzempliorių. Šiame straipsnyje aptariama, kaip naudoti „Java“ konstruktoriaus metodus kuriant objektą „Asmuo“.
Pastaba: Šiame pavyzdyje turite sukurti du failus tame pačiame aplanke: Asmuo.java apibrėžia asmens klasę ir „PersonExample.java“ yra pagrindinis metodas kad sukuria Asmens objektus.
Konstruktoriaus metodas
Pradėkime kurdami Asmens klasę, kurioje yra keturi privatūs laukai: vardas, pavardė, adresas ir vartotojo vardas. Šie laukai yra privatūs kintamieji ir jų reikšmės kartu sudaro objekto būseną. Mes taip pat pridėjome paprasčiausius konstruktoriaus metodus:
visuomenės klasės asmuo {
privatus stygos vardas;
privatus stygų pavardė;
privatus stygos adresas;
privatus stygos vartotojo vardas;
// Konstruktoriaus metodas
viešas asmuo ()
{
}
}
Konstruktoriaus metodas yra panašus į bet kurį kitą viešąjį metodą, išskyrus tai, kad jis turi tą patį pavadinimą kaip klasė ir negali grąžinti vertės. Jis negali turėti nei vieno, nei kelių parametrų.
Šiuo metu mūsų konstruktoriaus metodas nieko nedaro, todėl tinkamas laikas apsvarstyti, ką tai reiškia pradinei objekto „Asmuo“ būsenai. Jei palikome dalykus tokius, kokie jie yra, ar neįtraukėme konstruktoriaus į savo asmeninę klasę (in „Java“ galite apibrėžti klasę be vienos), tada laukai neturėtų reikšmių - ir mes tikrai norime, kad mūsų asmuo turėtų vardą, adresą ir kitas savybes. Jei manote, kad yra tikimybė, jog objektas nebus naudojamas taip, kaip tikėjotės, o laukai gali būti neinicializuoti kuriant objektą, visada apibrėžkite juos numatytąja verte:
visuomenės klasės asmuo {
privati eilutė firstName = "";
privati eilutė lastName = "";
privatus stygos adresas = "";
privatus stygos vartotojo vardas = "";
// Konstruktoriaus metodas
viešas asmuo ()
{
}
}
Paprastai, norėdami įsitikinti, kad konstruktoriaus metodas yra naudingas, mes suprojektuosime jį tikėdamiesi parametrų. Šių parametrų vertės gali būti naudojamos norint nustatyti privačių laukų reikšmes:
visuomenės klasės asmuo {
privatus stygos vardas;
privatus stygų pavardė;
privatus stygos adresas;
privatus stygos vartotojo vardas;
// Konstruktoriaus metodas
viešas asmuo (Stygos asmuoPavardė, Stygos asmenisPavardė, Styginių asmuoAdresas, Stygos asmenisPavadinimas)
{
firstName = personFirstName;
pavardė = personLastName;
adresas = personAddress;
vartotojo vardas = personUsername;
}
// Objekto būsenos rodymo ekrane metodas
viešas negaliojantis ekranasPersonDetails ()
{
System.out.println ("Vardas:" + Vardas + "" + Pavardė);
System.out.println („Adresas:“ + adresas);
System.out.println („Vartotojo vardas:“ + vartotojo vardas);
}
}
Mūsų konstruktoriaus metodas dabar tikisi, kad jam bus perduotos keturių stygų vertės. Tada jie naudojami pradinei objekto būsenai nustatyti. Mes taip pat pridėjome naują metodą, vadinamą displayPersonDetails () kad galėtume pamatyti objekto būseną po jo sukūrimo.
Skambinimas konstruktoriaus metodu
Skirtingai nuo kitų objekto metodų, konstruktoriaus metodas turi būti vadinamas „naujuoju“ raktiniu žodžiu:
visuomenės klasė „PersonExample“ {
public static void main (stygos [] args) {
Person dave = naujas asmuo („Dave“, „Davidson“, „12 Main St.“, „DDavidson“);
dave.displayPersonDetails ();
}
}
Štai ką mes padarėme:
- Norėdami sukurti naują objekto Asmens egzempliorių, pirmiausia nustatome asmens tipo kintamąjį, kuris sulaikys objektą. Šiame pavyzdyje mes tai vadinome dave.
- Kitoje lygybės ženklo pusėje mes vadiname mūsų Asmens klasės konstruktoriaus metodu ir perduodame jam keturias eilutės reikšmes. Mūsų konstruktoriaus metodas paims tas keturias reikšmes ir nustatys pradinę objekto Asmens būseną: firstName = "Dave", lastName = "Davidson", address = "12 Main St", username = "DDavidson".
Atkreipkite dėmesį, kaip mes perėjome prie pagrindinės „Java“ klasės, norėdami paskambinti objektu „Person“. Kai dirbsi su objektais, programos bus span kelis .java failus. Būtinai išsaugokite juos tame pačiame aplanke. Norėdami sudaryti ir paleisti programą, tiesiog sudarykite ir paleiskite „Java“ pagrindinė klasė byla (t. y. „PersonExample.java“). „Java“ kompiliatorius yra pakankamai protingas, kad suprastų, jog norite sudaryti Asmuo.java failą, nes matosi, kad jį panaudojote „PersonExample“ klasėje.
Parametrų įvardijimas
„Java“ kompiliatorius susipainioja, jei konstruktoriaus metodo parametrai turi tuos pačius pavadinimus kaip ir privatūs laukai. Šiame pavyzdyje galite pastebėti, kad mes juos atskyrėme, prieš tai nurodydami parametrus žodžiu „asmuo“. Verta paminėti, kad yra ir kitas būdas. Vietoj to galime naudoti raktinį žodį „this“:
// Konstruktoriaus metodas
viešas asmuo (eilutės vardas, pavardė, eilutės adresas, eilutės vartotojo vardas)
{
this.firstName = firstName;
this.lastName = pavardė;
this.address = adresas;
this.username = vartotojo vardas;
}
„Šis“ raktinis žodis „Java“ kompiliatoriui nurodo, kad kintamasis, kuriam bus priskiriama vertė, yra tas, kurį nustato klasė, o ne parametras. Tai programavimo stiliaus klausimas, tačiau šis metodas padeda apibrėžti konstruktoriaus parametrus nenaudojant kelių pavadinimų.
Daugiau nei vienas konstruktorių metodas
Projektuodami objektų klases, jūs neapsiribojate vien tik vieno konstruktoriaus metodo naudojimu. Galite nuspręsti, kad yra keletas būdų, kaip objektą galima inicijuoti. Vienintelis suvaržymas naudojant daugiau nei vieną konstruktoriaus metodą yra tas, kad parametrai turi skirtis.
Įsivaizduokite, kad tuo metu, kai sukursime objektą „Asmuo“, mes galbūt nežinosime vartotojo vardo. Pridėkime naują konstruktoriaus metodą, kuris nustato asmens objekto būseną naudojant tik vardą, pavardę ir adresą:
visuomenės klasės asmuo {
privatus stygos vardas;
privatus stygų pavardė;
privatus stygos adresas;
privatus stygos vartotojo vardas;
// Konstruktoriaus metodas
viešas asmuo (eilutės vardas, pavardė, eilutės adresas, eilutės vartotojo vardas)
{
this.firstName = firstName;
this.lastName = pavardė;
this.address = adresas;
this.username = vartotojo vardas;
}
// Naujasis konstruktoriaus metodas
viešas asmuo (eilutės vardas, pavardė, eilutės adresas)
{
this.firstName = firstName;
this.lastName = pavardė;
this.address = adresas;
this.username = "";
}
// Objekto būsenos rodymo ekrane metodas
viešas negaliojantis ekranasPersonDetails ()
{
System.out.println ("Vardas:" + Vardas + "" + Pavardė);
System.out.println („Adresas:“ + adresas);
System.out.println („Vartotojo vardas:“ + vartotojo vardas);
}
}
Atminkite, kad antrasis konstruktoriaus metodas taip pat vadinamas „Asmuo“ ir jis taip pat negrąžina vertės. Vienintelis skirtumas tarp jo ir pirmojo konstruktoriaus metodo yra parametrai - šį kartą to tikimasi trys eilutės reikšmės: vardas, pavardė ir adresas.
Dabar objektus „Asmuo“ galime sukurti dviem skirtingais būdais:
visuomenės klasė „PersonExample“ {
public static void main (stygos [] args) {
Person dave = naujas asmuo („Dave“, „Davidson“, „12 Main St.“, „DDavidson“);
Asmuo jim = naujas asmuo („Jim“, „Davidson“, „15 Kings Road“);
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}
Asmuo dave bus sukurtas su vardo, pavardės, adreso ir vartotojo vardais. Asmuo Jim, tačiau negausite vartotojo vardo, t. y. vartotojo vardas bus tuščia eilutė: vartotojo vardas = "".
Greitas pakartojimas
Konstruktoriaus metodai vadinami tik tada, kai sukuriamas naujas objekto egzempliorius. Jie:
- Turi turėti tą patį pavadinimą kaip klasė
- Negrąžinkite vertės
- Negali turėti nei vieno, nei vieno daug parametrų
- Gali sunumeruoti daugiau nei vieną, jei kiekvienas konstruktoriaus metodas turi skirtingą parametrų rinkinį
- Gali turėti parametrų pavadinimai tas pats kaip ir privatūs laukai, jei naudojamas raktinis žodis „šis“
- Kviečiami naudojant „naują“ raktinį žodį