Ce este un constructor în Java și cum îl folosești?

Ce este un constructor în Java și cum îl folosești?

În programarea orientată obiect, un constructor este o funcție specială pe care o apelați pentru a crea un obiect. Constructorii au mai multe caracteristici unice care le permit să funcționeze.





În Java, denumiți un constructor după clasa sa. Un constructor este o metodă, definită în clasa căreia i se aplică. Constructorii Java pot folosi supraîncărcarea pentru a oferi un comportament alternativ. Constructorii din Java pot folosi, de asemenea, moștenirea pentru a refolosi codul.





De ce ai nevoie de constructori?

Constructorii sunt un pilon al programării orientate pe obiecte, iar Java nu face excepție. Acest exemplu arată cum puteți defini o clasă de bază Circle cu o proprietate de date și o metodă:





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

Apoi puteți crea o instanță a acestei clase și să interacționați cu aceasta:

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

Dar acest lucru este mai puțin convenabil și robust decât ar putea fi. Este o bună practică orientată obiect să încapsulați datele, protejându-le de accesul neautorizat:



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

Acum, codul de apel poate utiliza setRadius și nu trebuie să vă faceți griji cu privire la detaliile sale de implementare:

cum să găsiți placă grafică Windows 10
Circle c = new Circle();
c.setRadius(2);

Constructorii oferă un mod și mai bun de a furniza date unui obiect atunci când îl creați. Sunt foarte des utilizate pentru inițializarea proprietăților, cum ar fi rază Aici.





Exemple de constructori simpli

Cel mai de bază constructor este unul fără argumente, care nu face nimic:

public class Circle {
public Circle() {}
}

Vezi si: Aflați cum să creați cursuri în Java





Dacă nu definiți un constructor, Java va furniza unul implicit care se comportă în același mod.

Rețineți câteva lucruri:

  1. Numele constructorului se potrivește cu numele clasei.
  2. Acest constructor folosește public modificator de acces, astfel încât orice alt cod îl poate apela.
  3. Un constructor nu include un tip de returnare. Spre deosebire de alte metode, constructorii nu pot returna o valoare.

Constructorii efectuează de obicei un fel de inițializare. Rețineți că codul de mai sus nu inițializează valoarea razei. În acest caz, limba îl va seta automat la zero. Această clasă se așteaptă ca un utilizator să o folosească setRadius () . Pentru a utiliza o valoare implicită mai utilă decât 0, o puteți atribui în cadrul constructorului:

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

Cercurile create cu această clasă vor avea cel puțin acum o zonă reală! Apelantul poate utiliza în continuare setRadius () pentru a furniza o rază diferită de 1. Dar constructorul poate fi și mai prietenos:

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

Acum puteți crea cercuri cu o anumită rază chiar de la naștere:

cum să ștergeți fișierul în Linux
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Aceasta este o utilizare foarte comună pentru constructori. Le veți folosi adesea pentru a inițializa variabilele la valorile parametrilor.

Supraîncărcarea constructorului

Puteți specifica mai multe constructori într-o definiție de clasă:

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

Acest lucru oferă codului apelant o alegere a modului de construire a obiectelor:

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

Cu un cerc puțin mai complex, puteți explora constructori mai interesanți. Această versiune își stochează poziția:

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

Acum puteți crea un cerc fără argumente, o singură rază sau coordonatele x și y alături de rază. Acesta este același tip de supraîncărcare pe care îl acceptă Java pentru orice metodă.

Înlănțuirea constructorului

Ce zici de crearea unui cerc, bazat pe altul? Acest lucru ne-ar oferi posibilitatea de a copia cu ușurință cercurile. Respectați următorul bloc:

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

Acest lucru va funcționa, dar repetă un cod inutil. Deoarece clasa Circle are deja un constructor care gestionează proprietățile individuale, îl puteți apela folosind acest cuvânt cheie:

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

Aceasta este o formă de înlănțuire a constructorului, care numește un constructor de la altul. Folosește mai puțin cod și ajută la centralizarea unei operațiuni, mai degrabă decât la duplicarea acesteia.

Apelarea constructorului părinte

Cealaltă formă de înlănțuire a constructorului apare atunci când un constructor numește un constructor din clasa sa părinte. Acest lucru poate fi explicit sau implicit. Pentru a apela în mod explicit un constructor părinte, utilizați super cuvânt cheie:

super(x, y);

Imaginați-vă o clasă Shape care acționează ca părintele cercului:

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

Se ocupă de poziționarea comună pentru toate formele, deoarece aceasta este o funcționalitate pe care o împărtășesc cu toții. Acum, clasa Circle poate delega gestionarea poziției părintelui său:

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

Construcția superclasei este un aspect foarte important al moștenirea în Java . Limba îl aplică în mod prestabilit dacă nu apelați în mod explicit super în constructorii tăi.

Modificatori de acces la constructori

Constructorii pot include un modificator de acces în semnătura lor. La fel ca alte metode, aceasta definește ce tipuri de apelant poate accesa constructorul:

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

Acesta este un exemplu mai complicat, deci aveți grijă să îl înțelegeți:

  • Clasa nu este abstractă, deci este posibil să se instanțeze din ea.
  • Constructorul este privat, deci numai această clasă în sine poate crea o nouă instanță.
  • Prin intermediul unei proprietăți și metode statice, clasa expune apelanților o singură instanță unică de la sine.

Utilizați constructori în Java pentru a crea obiecte

Constructorii sunt vitali pentru programarea orientată pe obiecte. Acestea vă permit să creați obiecte, ceea ce este esențial!

În Java, constructorii arată ca alte metode și funcționează în același mod. Ar trebui să vă amintiți regulile speciale referitoare la constructorii impliciți, supraîncărcarea și înlănțuirea constructorilor. Dacă constructorii sunt noi pentru dvs., vă recomandăm să citiți celelalte concepte Java de bază pe care ar trebui să le învățați atunci când începeți.

Acțiune Acțiune Tweet E-mail 10 concepte Java de bază pe care ar trebui să le învățați când începeți

Indiferent dacă scrieți o interfață grafică, dezvoltați software pentru server sau o aplicație mobilă utilizând Android, învățarea Java vă va servi bine. Iată câteva concepte Java de bază pentru a vă ajuta să începeți.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Java
  • Sfaturi de codare
Despre autor Bobby Jack(58 articole publicate)

Bobby este un pasionat de tehnologie care a lucrat ca dezvoltator de software timp de aproape două decenii. Este pasionat de jocuri, lucrează ca editor de recenzii la Switch Player Magazine și este cufundat în toate aspectele publicării online și dezvoltării web.

cum să importați parole în Chrome
Mai multe de la Bobby Jack

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona