Què és un constructor a Java i com s'utilitza?

Què és un constructor a Java i com s'utilitza?

En la programació orientada a objectes, un constructor és una funció especial a la qual crideu per crear un objecte. Els constructors tenen diverses funcions úniques que els permeten treballar.





A Java, anomeneu un constructor segons la seva classe. Un constructor és un mètode, definit a la classe a la qual s'aplica. Els constructors Java poden utilitzar una sobrecàrrega per proporcionar un comportament alternatiu. Els constructors de Java també poden fer ús de l'herència per reutilitzar el codi.





Per què necessiteu constructors de tota manera?

Els constructors són un puntal de la programació orientada a objectes i Java no és una excepció. Aquest exemple mostra com podeu definir una classe Circle bàsica amb una propietat de dades i un mètode:





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

A continuació, podeu crear una instància d'aquesta classe i interactuar-hi:

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

Però això és menys convenient i robust del que podria ser. És una bona pràctica orientada a objectes encapsular les dades, protegint-les de l'accés no autoritzat:



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

Ara el codi de trucada pot utilitzar el fitxer setRadius mètode i no s’ha de preocupar pels detalls de la seva implementació:

com canviar emoji a Messenger
Circle c = new Circle();
c.setRadius(2);

Els constructors ofereixen una manera encara millor de subministrar dades a un objecte quan les creeu. S’utilitzen molt sovint per a la inicialització de propietats, com ara radi aquí.





Exemples de constructors simples

El constructor més bàsic és aquell sense arguments, que no fa res:

public class Circle {
public Circle() {}
}

Vegeu també: Apreneu a crear classes a Java





Si no definiu un constructor, Java en proporcionarà un de predeterminat que es comportarà de la mateixa manera.

Tingueu en compte un parell de coses:

  1. El nom del constructor coincideix amb el nom de la classe.
  2. Aquest constructor utilitza el fitxer públic modificador d’accés, de manera que qualsevol altre codi el pot anomenar.
  3. Un constructor no inclou un tipus de retorn. A diferència d'altres mètodes, els constructors no poden retornar un valor.

Normalment, els constructors realitzen algun tipus d’inicialització. Tingueu en compte que el codi anterior no inicialitza el valor del radi. En aquest cas, l'idioma el definirà automàticament a zero. Aquesta classe espera que faci servir un usuari setRadius () . Per utilitzar un valor per defecte més útil que 0, podeu assignar-lo al constructor:

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

Els cercles creats amb aquesta classe almenys ara tindran una àrea real. La persona que truca encara pot utilitzar-la setRadius () per proporcionar un radi diferent a 1. Però el constructor pot ser encara més amable:

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

Ara podeu crear cercles amb un radi específic des del naixement:

com saber qui et va bloquejar a instagram
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Aquest és un ús molt comú per als constructors. Sovint els feu servir per inicialitzar les variables en valors de paràmetres.

Sobrecàrrega del constructor

Podeu especificar més d'un constructor en una definició de classe:

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

Això dóna al codi de trucada una opció sobre com construir objectes:

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

Amb un cercle una mica més complex, podeu explorar constructors més interessants. Aquesta versió emmagatzema la seva posició:

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

Ara podeu crear un cercle sense arguments, un radi únic o coordenades xey al costat del radi. Aquest és el mateix tipus de sobrecàrrega que suporta Java per a qualsevol mètode.

Encadenament de constructors

Què hi ha de crear un cercle, basat en un altre? Això ens donaria la possibilitat de copiar cercles fàcilment. Observeu el bloc següent:

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

Això funcionarà, però repeteix algun codi innecessàriament. Com que la classe Circle ja té un constructor que gestiona les propietats individuals, podeu trucar-ho mitjançant el això paraula clau:

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

Aquesta és una forma d'encadenament de constructors, anomenant un constructor d'un altre. Utilitza menys codi i ajuda a centralitzar una operació en lloc de duplicar-la.

Trucar al constructor principal

L’altra forma d’encadenament de constructors es produeix quan un constructor crida un constructor de la seva classe pare. Això pot ser explícit o implícit. Per trucar explícitament a un constructor pare, utilitzeu el fitxer súper paraula clau:

super(x, y);

Imagineu-vos una classe Shape que actua com a pare del cercle:

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

Gestiona el posicionament comú per a totes les formes, ja que és una funcionalitat que comparteixen tots. Ara la classe Circle pot delegar el tractament de la posició al seu pare o mare:

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

La construcció de superclasses és un aspecte molt important de herència a Java . L’idioma l’aplica de manera predeterminada si no truca explícitament súper en els vostres constructors.

Modificadors d'accés als constructors

Els constructors poden incloure un modificador d’accés a la seva signatura. Igual que altres mètodes, defineix quins tipus de trucades poden accedir al constructor:

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

Aquest és un exemple més complicat, així que tingueu cura de comprendre-ho:

  • La classe no és abstracta, de manera que és possible crear-ne una instantània.
  • El constructor és privat, de manera que només aquesta mateixa classe pot crear una nova instància.
  • Mitjançant una propietat i un mètode estàtics, la classe exposa una única instància única a les persones que truquen.

Utilitzeu constructors a Java per crear objectes

Els constructors són vitals per a la programació orientada a objectes. Permeten crear objectes, que és essencial.

A Java, els constructors semblen altres mètodes i funcionen de la mateixa manera. Heu de recordar les regles especials al voltant dels constructors predeterminats, la sobrecàrrega i la cadena de constructors. Si els constructors són nous per a vosaltres, us recomanem que llegiu els altres conceptes bàsics de Java que heu d’aprendre quan comenceu.

Compartir Compartir Tweet Correu electrònic 10 conceptes bàsics de Java que hauríeu d'aprendre quan comenceu

Tant si esteu escrivint una interfície gràfica d’usuari, desenvolupant programari del servidor o una aplicació mòbil amb Android, aprendre Java us servirà bé. Aquests són alguns conceptes bàsics de Java per ajudar-vos a començar.

Llegiu a continuació
Temes relacionats
  • Programació
  • Java
  • Consells de codificació
Sobre l'autor Bobby Jack(58 articles publicats)

Bobby és un entusiasta de la tecnologia que va treballar com a desenvolupador de programari durant gairebé dues dècades. És un apassionat dels jocs, treballa com a editor de ressenyes a Switch Player Magazine i està immers en tots els aspectes de la publicació en línia i el desenvolupament web.

com trobar informació sobre algú
Més de Bobby Jack

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us