Kas ir Java konstruktors un kā to izmantot?

Kas ir Java konstruktors un kā to izmantot?

Objektorientētā programmēšanā konstruktors ir īpaša funkcija, kuru izsaucat, lai izveidotu objektu. Konstruktoriem ir vairākas unikālas funkcijas, kas ļauj tām strādāt.





Programmā Java konstruktoru nosauc pēc klases. Konstruktors ir metode, kas definēta klasē, uz kuru tas attiecas. Java konstruktori var izmantot pārslodzi, lai nodrošinātu alternatīvu darbību. Java konstruktori var arī izmantot mantojumu, lai atkārtoti izmantotu kodu.





Kāpēc jums vispār vajadzīgi konstruktori?

Konstruktori ir objektorientētas programmēšanas pamats, un Java nav izņēmums. Šajā piemērā ir parādīts, kā jūs varat definēt loka klasi ar vienu datu rekvizītu un vienu metodi:





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

Pēc tam varat izveidot šīs klases eksemplāru un mijiedarboties ar to:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

Bet tas ir mazāk ērti un izturīgi, nekā tas varētu būt. Laba uz objektiem orientēta prakse ir iekapsulēt datus, pasargājot tos no nesankcionētas piekļuves:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

Tagad zvanīšanas kods var izmantot setRadius metodi un nav jāuztraucas par tās ieviešanas detaļām:

šī persona mēģināja atbloķēt jūsu tālruni
Circle c = new Circle();
c.setRadius(2);

Konstruktori piedāvā vēl labāku datu piegādes veidu objektam, kad to izveidojat. Tos ļoti bieži izmanto tādu īpašību inicializēšanai kā, piemēram, rādiuss šeit.





Vienkāršu konstruktoru piemēri

Visvienkāršākais konstruktors ir tas, kuram nav argumentu un kurš neko nedara:

public class Circle {
public Circle() {}
}

Skatīt arī: Uzziniet, kā izveidot nodarbības Java





Ja nenosakāt konstruktoru, Java nodrošinās noklusējuma versiju, kas darbojas tāpat.

Ņemiet vērā pāris lietas:

  1. Konstruktora nosaukums atbilst klases nosaukumam.
  2. Šis konstruktors izmanto publiski piekļuves modifikators, lai to varētu izsaukt jebkurš cits kods.
  3. Konstruktorā nav iekļauts atgriešanās veids. 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 automātiski iestatīs to uz nulli. Šī klase paredz lietotājam izmantot setRadius () . Lai izmantotu noderīgāku noklusējumu nekā 0, varat to piešķirt konstruktorā:

public class Circle {
public Circle() { radius = 1; }
}

Lokiem, kas izveidoti, izmantojot šo klasi, vismaz tagad būs faktiskā platība! 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:

public class Circle {
public Circle(double r) { radius = r; }
}

Tagad jūs varat izveidot lokus ar noteiktu rādiusu jau no dzimšanas:

kā fotografēšanai izmantot zaļo ekrānu
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Konstruktoriem tas ir ļoti izplatīts lietojums. Jūs tos bieži izmantosit, lai inicializētu mainīgos parametru vērtībās.

Konstruktoru pārslodze

Klases definīcijā varat norādīt vairākus konstruktorus:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

Tas dod zvanīšanas kodam iespēju izvēlēties, kā veidot objektus:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

Izmantojot nedaudz sarežģītāku apli, varat izpētīt interesantākus konstruktorus. Šī versija saglabā savu pozīciju:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Tagad varat izveidot apli bez argumentiem, viena rādiusa vai x un y koordinātām blakus rādiusam. Tas ir tāds pats pārslodzes veids, ko Java atbalsta jebkurai metodei.

Konstruktoru ķēdes

Kā būtu izveidot vienu loku, pamatojoties uz citu? Tas mums ļautu viegli kopēt lokus. Ievērojiet šādu bloku:

public Circle(Circle c) {
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 klasei jau ir konstruktors, kas apstrādā atsevišķos rekvizītus, to var izsaukt, izmantojot šo atslēgvārds:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

Tas ir viens no konstruktoru ķēdes veidiem, izsaucot vienu konstruktoru no cita. Tas izmanto mazāk koda un palīdz centralizēt darbību, nevis to dublēt.

Zvanot vecāku konstruktorim

Cits konstruktoru ķēdes veids rodas, kad konstruktors izsauc savas vecāku klases konstruktoru. Tas var būt skaidrs vai netiešs. Lai nepārprotami izsauktu vecāku konstruktoru, izmantojiet super atslēgvārds:

super(x, y);

Iedomājieties formu klasi, kas darbojas kā apļa vecāks:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

Tā apstrādā visu formu kopējo pozicionēšanu, jo šī ir funkcionalitāte, kas tām visām ir kopīga. Tagad Circle klase var deleģēt pozīciju apstrādi saviem vecākiem:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

Virsklases konstrukcija ir ļoti svarīgs aspekts mantojums Java . Valoda to ievieš pēc noklusējuma, ja nepārzvanāt super jūsu konstruktoros.

Piekļuves pārveidotāji konstruktoros

Konstruktori savā parakstā var iekļaut piekļuves pārveidotāju. Tāpat kā citas metodes, tas nosaka, kāda veida zvanītāji var piekļūt konstruktoram:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

Š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 momentāni izveidot.
  • Konstruktors ir privāts, tāpēc tikai šī klase pati var izveidot jaunu instanci.
  • Izmantojot statisku īpašību un metodi, klase zvanītājiem atklāj vienu unikālu eksemplāru.

Izmantojiet Java konstruktorus, lai izveidotu objektus

Konstruktori ir ļoti svarīgi objektorientētai programmēšanai. Tie ļauj jums izveidot objektus, kas ir būtiski!

Java programmā konstruktori izskatās kā citas metodes un darbojas aptuveni tādā pašā veidā. Jums vajadzētu atcerēties īpašos noteikumus par noklusējuma konstruktoriem, pārslodzi un konstruktoru ķēdēšanu. Ja konstruktori jums ir jauni, iespējams, vēlēsities iepazīties ar citiem Java galvenajiem jēdzieniem, kas jums jāiemācās, sākot darbu.

Kopīgot Kopīgot Čivināt E -pasts 10 pamata Java jēdzieni, kas jums jāiemācās, sākot darbu

Neatkarīgi no tā, vai rakstāt GUI, izstrādājat servera puses programmatūru vai mobilo lietojumprogrammu, izmantojot Android, Java apgūšana jums noderēs. Šeit ir daži galvenie Java jēdzieni, kas palīdzēs jums sākt darbu.

Lasīt Tālāk
Saistītās tēmas
  • Programmēšana
  • Java
  • Kodēšanas padomi
Par autoru Bobijs Džeks(58 raksti publicēti)

Bobijs ir tehnoloģiju entuziasts, kurš gandrīz divus gadu desmitus strādāja par programmatūras izstrādātāju. Viņš aizraujas ar spēlēm, strādā par atsauksmju redaktoru žurnālā Switch Player un ir iedziļinājies visos tiešsaistes publicēšanas un tīmekļa izstrādes aspektos.

kā izdzēst repozitoriju vietnē github
Vairāk no Bobija Džeka

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu