Objektorientētā programmēšanā konstruktors ir īpaša funkcija, kuru izsaucat, lai izveidotu objektu. Konstruktoriem ir vairākas unikālas iespējas, kas ļauj viņiem strādāt.
Java valodā jūs nosaucat konstruktoru pēc tā klases. Konstruktors ir metode, kas definēta klasē, uz kuru tā attiecas. Java konstruktori var izmantot pārslodzi, lai nodrošinātu alternatīvu rīcību. Java konstruktori var izmantot mantojumu arī koda atkārtotai izmantošanai.
Kāpēc jums vispār ir nepieciešami konstruktori?
Konstruktori ir galvenais elements objektorientēta programmēšana, un Java nav izņēmums. Šis piemērs parāda, kā jūs varat definēt pamata apļa klasi ar vienu datu rekvizītu un vienu metodi:
publiskās klases aplis {
publisks dubultais rādiuss;
publiskā dubultā zona () {atgriešanās 3.14159 * rādiuss * rādiuss; }
}
Pēc tam varat izveidot šīs klases instanci un mijiedarboties ar to:
Aplis c = jauns aplis ();
c. rādiuss = 2;
System.out.println (c. Apgabals ()); // 12.56636
Bet tas ir mazāk ērti un izturīgi, nekā tas varētu būt. Ir laba objektorientētā prakse iekapsulēt datus, pasargājot tos no nesankcionētas piekļuves:
publiskās klases aplis {
Privāts dubultā rādiuss;
publiskā dubultā zona () {atgriešanās 3.14159 * rādiuss * rādiuss; }
public void setRadius (double r) {rādiuss = r; }
}
Tagad zvanīšanas kods var izmantot setRadius metodi un nav jāuztraucas par tās ieviešanas detaļām:
Aplis c = jauns aplis ();
c.setRadius (2);
Konstruktori piedāvā vēl labāku datu piegādes veidu objektam, kad to izveidojat. Tos ļoti bieži izmanto, lai inicializētu īpašības, piemēram, rādiuss šeit.
Vienkāršu konstruktoru piemēri
Pamata konstruktors ir tāds, kurā nav argumentu, un tas neko nedara:
publiskās klases aplis {
publiskais loks () {}
}
Skatīt arī: Uzziniet, kā izveidot klases Java
Ja nenoteiksit konstruktoru, Java nodrošinās noklusējuma versiju, kas rīkojas tāpat.
Ievērojiet dažas lietas:
- Konstruktora nosaukums sakrīt ar klases nosaukumu.
- Šis konstruktors izmanto publiski piekļuves modifikators, tāpēc jebkurš cits kods to var izsaukt.
- Konstruktors neietver atgriešanās veidu. Atšķirībā no citām metodēm, konstruktori nevar atgriezt vērtību.
Konstruktori parasti veic sava veida inicializāciju. Ņemiet vērā, ka iepriekš minētais kods neinicializē rādiusa vērtību. Šajā gadījumā valoda to automātiski iestatīs uz nulli. Šī klase sagaida, ka lietotājs to izmantos setRadius (). Lai izmantotu vairāk noderīgu noklusējumu nekā 0, varat to piešķirt konstruktorā:
publiskās klases aplis {
publiskais aplis () {rādiuss = 1; }
}
Ar šo klasi izveidotajiem lokiem vismaz tagad būs faktiskais apgabals! Zvanītājs joprojām var izmantot setRadius () lai nodrošinātu rādiusu, kas nav 1. Bet konstruktors var būt vēl draudzīgāks:
publiskās klases aplis {
publiskais aplis (dubultā r) {rādiuss = r; }
}
Tagad jūs varat izveidot lokus ar noteiktu rādiusu jau kopš dzimšanas:
Aplis c = jauns aplis (2);
System.out.println (c. Apgabals ()); // 12.56636
Tas ir ļoti izplatīts konstruktoru pielietojums. Jūs tos bieži izmantosiet, lai mainīgos mainītu parametru vērtībās.
Konstruktora pārslodze
Klases definīcijā varat norādīt vairākus konstruktorus:
publiskais aplis () {rādiuss = 1; }
publiskais aplis (dubultā r) {rādiuss = r; }
Tas dod izsaukuma kodam iespēju izvēlēties, kā veidot objektus:
Aplis c1 = jauns aplis (2);
Aplis c2 = jauns aplis ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159
Izmantojot nedaudz sarežģītāku loku, varat izpētīt interesantākus konstruktorus. Šī versija saglabā savu pozīciju:
publiskās klases aplis {
publisks dubultnieks x, y, rādiuss;
publiskais aplis () {rādiuss = r; }
publiskais aplis (dubultā r) {rādiuss = r; }
publiskais aplis (dubultā x, dubultā y, dubultā r) {
this.x = x; tas.y = y; rādiuss = r;
}
publiskā dubultā zona () {atgriešanās 3.14159 * rādiuss * rādiuss; }
}
Tagad varat izveidot apli bez argumentiem, viena rādiusa vai x un y koordinātas blakus rādiusam. Šī ir tāda paša veida pārslodze, kuru Java atbalsta jebkurai metodei.
Konstruktora ķēdes
Kā būtu ar viena loka izveidošanu, pamatojoties uz citu? Tas mums dotu iespēju viegli kopēt lokus. Ievērojiet šādu bloku:
publiskais aplis (c aplis) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}
Tas darbosies, taču tas nevajadzīgi atkārto kādu kodu. Tā kā Circle klasē jau ir konstruktors, kas apstrādā atsevišķās īpašības, varat to izsaukt, izmantojot šo atslēgvārds:
publiskais aplis (c aplis) {
tas (cx, cy, c.radiuss);
}
Šī ir viena konstruktora ķēdes forma, izsaucot vienu konstruktoru no otra. Tas izmanto mazāk kodu un palīdz centralizēt darbību, nevis dublēt to.
Zvanīšana vecāku konstruktoram
Cita konstruktora ķēdes forma notiek, kad konstruktors izsauc vecāku klases konstruktoru. Tas var būt tiešs vai netiešs. Lai skaidri izsauktu vecāku konstruktoru, izmantojiet super atslēgvārds:
super (x, y);
Iedomājieties, ka Shape klase darbojas kā Loka vecāks:
sabiedrības klases forma {
dubultā x, y;
publiskā forma (dubultā _x, dubultā _y) {x = _x; y = _y; }
}
Tas apstrādā kopīgu pozīciju visām formām, jo tā ir funkcionalitāte, kas viņiem visiem ir kopīga. Tagad klase Circle var deleģēt pozīciju apstrādi vecākiem:
sabiedrības klases aplis pagarina Formu {
dubultā rādiuss;
publiskais aplis (dubultā r) {super (0, 0); rādiuss = r; }
publiskais aplis (dubultā x, dubultā y, dubultā r) {
super (x, y);
rādiuss = r;
}
}
Superklases uzbūve ir ļoti svarīgs aspekts mantojums Java. Valoda to izpilda pēc noklusējuma, ja jūs skaidri nezvanāt super savos konstruktoros.
Piekļuves pārveidotāji uz konstruktoriem
Konstruktori var parakstīt piekļuves modifikatoru. Tāpat kā citas metodes, tas nosaka, kuri zvanītāju veidi var piekļūt konstruktoram:
publiskās klases tests {
privāts statisks tests unikālsAtstāja = jauns tests ();
privāts tests () {}
publiskais statiskais tests getInstance () {
atgriezt unikāluAttiecība;
}
}
Šis ir sarežģītāks piemērs, tāpēc uzmanieties, lai to saprastu:
- Klase nav abstrakta, tāpēc no tās ir iespējams instancēt.
- Konstruktors ir privāts, tāpēc tikai šī klase pati var izveidot jaunu instanci.
- Izmantojot statisko īpašību un metodi, klase zvanītājiem atklāj vienu, unikālu gadījumu.
Lai izveidotu objektus, izmantojiet Java konstruktorus
Konstruktori ir vitāli nepieciešami objektorientētai programmēšanai. Tie ļauj jums izveidot objektus, kas ir būtiski!
Java valodā konstruktori izskatās pēc citām metodēm un darbojas līdzīgi. Jums vajadzētu atcerēties īpašos noteikumus par noklusējuma konstruktoriem, pārslodzi un konstruktoru ķēdēm. Ja konstruktori jums ir jauni, ieteicams izlasīt citus Java pamatjēdzienus, kas jums jāapgūst, sākot darbu.
Neatkarīgi no tā, vai rakstāt GUI, izstrādājat servera puses programmatūru vai mobilo lietojumprogrammu, izmantojot Android, Java mācīšanās jums labi noderēs. Šeit ir daži galvenie Java jēdzieni, kas palīdzēs jums sākt darbu.
Lasiet Tālāk
- Programmēšana
- Java
- Kodēšanas padomi
Bobijs ir tehnoloģiju entuziasts, kurš gandrīz divas desmitgades strādāja par programmatūras izstrādātāju. Viņš aizrauj spēles, strādā par atsauksmju redaktoru žurnālā Switch Player un ir iedziļinājies visos tiešsaistes izdevējdarbības un tīmekļa izstrādes aspektos.
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!
Vēl viens solis !!!
Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.