Kaj je konstruktor v Javi in ​​kako ga uporabljate?

Kaj je konstruktor v Javi in ​​kako ga uporabljate?

V 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 svojem razredu. Konstruktor je metoda, opredeljena v razredu, na katerega se nanaša. Konstruktorji Java lahko uporabijo preobremenitev za zagotavljanje alternativnega vedenja. Konstruktorji v Javi lahko za ponovno uporabo kode uporabijo tudi dedovanje.





Zakaj sploh potrebujete konstruktorje?

Konstruktorji so temelj objektno usmerjenega programiranja in Java ni izjema. Ta primer prikazuje, kako lahko definirate osnovni razred kroga z eno lastnostjo podatkov in eno metodo:





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

Nato lahko ustvarite primerek tega razreda in z njim komunicirate:

Circle c = new Circle();
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 inkapsulirati podatke in jih zaščititi pred nepooblaščenim dostopom:



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

Zdaj lahko klicna koda uporablja setRadius metodo in vam ni treba skrbeti za podrobnosti o njenem izvajanju:

ta oseba je poskušala odkleniti vaš telefon
Circle c = new Circle();
c.setRadius(2);

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





Primeri preprostih konstruktorjev

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

public class Circle {
public Circle() {}
}

Poglej tudi: Naučite se ustvarjati razrede v Javi





Če ne določite 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 datoteko javno modifikator dostopa, zato ga lahko pokliče katera koli druga koda.
  3. Konstruktor ne vključuje vrste vrnitve. Za razliko od drugih metod konstruktorji ne morejo vrniti vrednosti.

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

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

Krogi, ustvarjeni s tem razredom, bodo zdaj imeli dejansko površino! Klicatelj lahko še vedno uporablja setRadius () zagotoviti polmer, ki ni 1. Toda konstruktor je lahko še prijaznejši:

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

Zdaj lahko že od rojstva ustvarite kroge s posebnim polmerom:

katera je najboljša vr aplikacija
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

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

Preobremenitev konstruktorja

V definiciji razreda lahko podate več konstruktorjev:

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

To daje klicni kodi možnost izbire, kako sestaviti predmete:

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

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

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; }
}

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

Konstruktorska veriga

Kaj pa ustvarjanje enega kroga na podlagi drugega? To bi nam omogočilo enostavno kopiranje krogov. Upoštevajte naslednji blok:

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

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

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

To je ena oblika veriženja konstruktorjev, ki kliče enega konstruktorja od drugega. Uporablja manj kode in pomaga pri centraliziranju operacije, ne pa pri njenem podvajanju.

Klicanje starševskega 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:

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

Upravlja skupno pozicioniranje za vse oblike, saj je to funkcija, ki si jo vsi delijo. Zdaj lahko razred Circle prenese upravljanje položaja na svojega starša:

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;
}
}

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

Dostop do modifikatorjev na konstruktorjih

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

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

To je bolj zapleten primer, zato ga razumejte:

  • Razred ni abstrakten, zato ga je mogoče ustvariti.
  • Konstruktor je zaseben, zato lahko samo ta razred sam ustvari nov primerek.
  • S statično lastnostjo in metodo razred klicalcem razkrije en sam, edinstven primerek sebe.

Za ustvarjanje predmetov uporabite konstruktorje v Javi

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

V Javi so konstruktorji podobni drugim metodam in delujejo na približno enak način. Zapomnite si posebna pravila glede privzetih konstruktorjev, preobremenitve in veriženja konstruktorjev. Če so vam konstruktorji novi, boste morda želeli prebrati druge osnovne koncepte Java, ki bi se jih morali naučiti ob začetku.

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

Ne glede na to, ali pišete grafični vmesnik, razvijate strežniško programsko opremo ali mobilno aplikacijo z operacijskim sistemom Android, vam bo učenje Jave koristilo. Tukaj je nekaj osnovnih konceptov Java, ki vam bodo pomagali začeti.

Preberite Naprej
Sorodne teme
  • Programiranje
  • Java
  • Nasveti za kodiranje
O avtorju Bobby Jack(58 objavljenih č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 recenzij v reviji Switch Player in je potopljen v vse vidike spletnega založništva in spletnega razvoja.

moja e -poštna sporočila se ne bodo naložila na moj android
Več od Bobbyja Jacka

Naročite se na naše novice

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

Kliknite tukaj, da se naročite