Pri objektno usmerjenem programiranju je konstruktor posebna funkcija, ki jo pokličete za ustvarjanje predmeta. Konstruktorji imajo več edinstvenih lastnosti, ki jim omogočajo delo.

V Javi poimenujete konstruktor po njegovem razredu. Konstruktor je metoda, opredeljena v razredu, za katerega velja. Konstruktorji Java lahko uporabijo preobremenitev za zagotavljanje alternativnega vedenja. Konstruktorji v Javi lahko dedovanje uporabijo tudi za ponovno uporabo kode.

Zakaj sploh potrebujete konstruktorje?

Konstruktorji so glavni nosilec objektno usmerjeno programiranjein Java ni nobena izjema. Ta primer prikazuje, kako lahko definirate osnovni razred Circle z eno lastnostjo podatkov in eno metodo:

javni krog {
javni dvojni radij;
javno dvojno območje () {vrnitev 3,14159 * polmer * polmer; }
}

Nato lahko ustvarite primerek tega razreda in komunicirate z njim:

Krog c = nov krog ();
c.radius = 2;
System.out.println (c.area ()); // 12.56636

Toda to je manj priročno in robustno, kot bi lahko bilo. Dobra objektno usmerjena praksa je, da podatke zapirate in jih zaščitite pred nepooblaščenim dostopom:

instagram viewer

javni krog {
zasebno dvojni polmer;
javno dvojno območje () {vrnitev 3,14159 * polmer * polmer; }
javna praznina setRadius (dvojno r) {polmer = r; }
}

Zdaj lahko klicna koda uporablja setRadius metode in vam ni treba skrbeti za podrobnosti njene izvedbe:

Krog c = nov krog ();
c.setRadius (2);

Konstruktorji ponujajo še boljši način dostavljanja podatkov predmetu, ko ga ustvarite. Zelo pogosto se uporabljajo za inicializacijo lastnosti, kot je polmer tukaj.

Primeri enostavnih konstruktorjev

Najosnovnejši konstruktor je tisti brez argumentov, ki ne naredi ničesar:

javni krog {
javni krog () {}
}

Poglej tudi: Naučite se ustvariti razrede v Javi

Če ne definirate konstruktorja, bo Java zagotovila privzetega, ki se obnaša na enak način.

Upoštevajte nekaj stvari:

  1. Ime konstruktorja se ujema z imenom razreda.
  2. Ta konstruktor uporablja javnosti modifikator dostopa, tako da ga lahko pokliče katera koli druga koda.
  3. Konstruktor ne vključuje vrnjene vrste. V nasprotju z drugimi metodami konstruktorji ne morejo vrniti vrednosti.

Konstruktorji običajno izvedejo nekakšno inicializacijo. Upoštevajte, da zgornja koda ne inicializira vrednosti polmera. V tem primeru ga bo jezik samodejno postavil na nič. Ta razred pričakuje, da ga bo uporabnik uporabil setRadius (). Če želite uporabiti uporabnejšo privzeto vrednost kot 0, jo lahko dodelite v konstruktorju:

javni krog {
javni krog () {polmer = 1; }
}

Krogi, ustvarjeni s tem razredom, bodo vsaj zdaj imeli dejansko površino! Klicatelj lahko še vedno uporablja setRadius () da dobimo polmer, ki ni 1. Toda konstruktor je lahko še bolj prijazen:

javni krog {
javni krog (dvojni r) {polmer = r; }
}

Zdaj lahko že od rojstva ustvarite kroge z določenim polmerom:

Krog c = nov krog (2);
System.out.println (c.area ()); // 12.56636

To je zelo pogosta uporaba za konstruktorje. Pogosto jih boste uporabili za inicializacijo spremenljivk na vrednosti parametrov.

Preobremenitev konstruktorja

V definiciji razreda lahko podate več kot en konstruktor:

javni krog () {polmer = 1; }
javni krog (dvojni r) {polmer = r; }

To daje klicni kodi možnost, kako zgraditi predmete:

Krog c1 = nov krog (2);
Krog c2 = nov krog ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159

Z nekoliko bolj zapletenim Circle lahko raziščete bolj zanimive konstruktorje. Ta različica shrani svoj položaj:

javni krog {
javni dvojnik x, y, polmer;
javni krog () {polmer = r; }
javni krog (dvojni r) {polmer = r; }
javni krog (dvojni x, dvojni y, dvojni r) {
to.x = x; to.y = y; polmer = r;
}

javno dvojno območje () {vrnitev 3,14159 * polmer * polmer; }
}

Zdaj lahko ustvarite krog brez argumentov, enega polmera ali x in y koordinat ob polmeru. To je ista vrsta preobremenitve, ki jo Java podpira za katero koli metodo.

Veriga konstruktorja

Kaj pa ustvariti en krog, ki temelji na drugem? To bi nam omogočilo enostavno kopiranje krogov. Upoštevajte naslednji blok:

javni krog (krog c) {
to.x = c.x;
to.y = c.y;
this.radius = c.radius;
}

To bo delovalo, vendar po nepotrebnem ponavlja neko kodo. Ker ima razred Circle že konstruktor, ki obravnava posamezne lastnosti, ga lahko pokličete z uporabo to ključna beseda:

javni krog (krog c) {
to (c.x, c.y, c.radius);
}

To je ena oblika verige konstruktorjev, ki prikliče enega konstruktorja iz drugega. Uporablja manj kode in pomaga centralizirati operacijo, namesto da bi jo podvajala.

Klicanje nadrejenega konstruktorja

Druga oblika veriženja konstruktorjev se pojavi, ko konstruktor pokliče konstruktor svojega nadrejenega razreda. To je lahko eksplicitno ali implicitno. Če želite izrecno poklicati nadrejeni konstruktor, uporabite super ključna beseda:

super (x, y);

Predstavljajte si razred Shape, ki deluje kot starš kroga:

oblika javnega razreda {
dvojni x, y;
javna oblika (dvojno _x, dvojno _y) {x = _x; y = _y; }
}

Obravnava skupno pozicioniranje za vse oblike, saj je to skupna funkcionalnost. Zdaj lahko razred Circle svoje starše prenese na upravljanje položaja:

javni krog razširi Shape {
dvojni polmer;
javni krog (dvojni r) {super (0, 0); polmer = r; }
javni krog (dvojni x, dvojni y, dvojni r) {
super (x, y);
polmer = r;
}
}

Konstrukcija superrazredov je zelo pomemben vidik dedovanje v Javi. Jezik ga privzeto uveljavi, če izrecno ne pokličete super v vaših konstruktorjih.

Modifikatorji dostopa na konstruktorjih

Konstruktorji lahko v svoj podpis vključijo modifikator dostopa. Tako kot druge metode tudi ta določa, katere vrste klicateljev lahko dostopajo do konstruktorja:

test javnega razreda {
zasebni statični test uniqueInstance = new Test ();
zasebni test () {}
javni statični test getInstance () {
vrni uniqueInstance;
}
}

To je bolj zapleten primer, zato bodite pozorni na to:

  • Predavanje ni abstraktno, zato je mogoče iz njega ustvariti primerek.
  • Konstruktor je zaseben, zato lahko samo ta razred sam ustvari nov primerek.
  • Prek statične lastnosti in metode razred izpostavi en sam, edinstven primerek samega sebe kličočim.

Za ustvarjanje predmetov uporabite konstruktorje v Javi

Konstruktorji so ključnega pomena za objektno usmerjeno programiranje. Omogočajo vam ustvarjanje predmetov, kar je bistvenega pomena!

V Javi so konstruktorji videti kot druge metode in delujejo približno enako. Ne pozabite na posebna pravila glede privzetih konstruktorjev, preobremenitve in veriženja konstruktorjev. Če so konstruktorji za vas novi, boste morda želeli prebrati druge temeljne koncepte Java, ki bi se jih morali naučiti ob začetku.

E-naslov
10 osnovnih konceptov Java, ki bi se jih morali naučiti, ko začnete

Ne glede na to, ali pišete GUI, razvijate strežniško programsko opremo ali mobilno aplikacijo z Androidom, vam učenje Java dobro služi. Tu je nekaj osnovnih konceptov Java, ki vam bodo pomagali začeti.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Java
  • Nasveti za kodiranje
O avtorju
Bobby Jack (Objavljeno 51 člankov)

Bobby je tehnološki navdušenec, ki je več kot dve desetletji delal kot razvijalec programske opreme. Navdušen je nad igranjem iger, dela kot urednik mnenj pri reviji Switch Player in je poglobljen v vse vidike spletnega založništva in spletnega razvoja.

Več od Bobbyja Jacka

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Še en korak…!

Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.

.