Che cos'è un costruttore in Java e come lo si usa?

Che cos'è un costruttore in Java e come lo si usa?

Nella programmazione orientata agli oggetti, un costruttore è una funzione speciale chiamata per creare un oggetto. I costruttori hanno diverse caratteristiche uniche che consentono loro di lavorare.





In Java, chiami un costruttore dopo la sua classe. Un costruttore è un metodo, definito nella classe a cui si applica. I costruttori Java possono utilizzare l'overload per fornire un comportamento alternativo. I costruttori in Java possono anche utilizzare l'ereditarietà per riutilizzare il codice.





Perché hai bisogno di costruttori comunque?

I costruttori sono un pilastro della programmazione orientata agli oggetti e Java non fa eccezione. Questo esempio mostra come definire una classe Circle di base con una proprietà dei dati e un metodo:





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

Puoi quindi creare un'istanza di questa classe e interagire con essa:

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

Ma questo è meno conveniente e robusto di quanto potrebbe essere. È buona pratica orientata agli oggetti incapsulare i dati, proteggendoli da accessi non autorizzati:



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

Ora il codice chiamante può utilizzare il setRadio metodo e non devi preoccuparti dei suoi dettagli di implementazione:

quanto costa la famiglia premium di YouTube
Circle c = new Circle();
c.setRadius(2);

I costruttori offrono un modo ancora migliore di fornire dati a un oggetto quando lo crei. Sono molto spesso utilizzati per l'inizializzazione di proprietà, come il raggio qui.





Esempi di semplici costruttori

Il costruttore più semplice è uno senza argomenti, che non fa nulla:

public class Circle {
public Circle() {}
}

Guarda anche: Impara come creare classi in Java





Se non definisci un costruttore, Java ne fornirà uno predefinito che si comporterà allo stesso modo.

Nota un paio di cose:

  1. Il nome del costruttore corrisponde al nome della classe.
  2. Questo costruttore usa il pubblico modificatore di accesso, quindi qualsiasi altro codice può chiamarlo.
  3. Un costruttore non include un tipo restituito. A differenza di altri metodi, i costruttori non possono restituire un valore.

I costruttori in genere eseguono una sorta di inizializzazione. Nota che il codice sopra non inizializza il valore di raggio. In questo caso, la lingua lo imposterà automaticamente a zero. Questa classe si aspetta che un utente utilizzi setRadio() . Per utilizzare un valore predefinito più utile di 0, puoi assegnarlo all'interno del costruttore:

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

I cerchi creati con questa classe almeno ora avranno un'area reale! Il chiamante può ancora usare setRadio() per fornire un raggio diverso da 1. Ma il costruttore può essere ancora più amichevole:

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

Ora puoi creare cerchi con un raggio specifico fin dalla nascita:

come abilitare la posizione su snapchat
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Questo è un uso molto comune per i costruttori. Li utilizzerai spesso per inizializzare le variabili sui valori dei parametri.

Sovraccarico del costruttore

È possibile specificare più di un costruttore in una definizione di classe:

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

Questo dà al codice chiamante una scelta su come costruire oggetti:

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

Con un cerchio leggermente più complesso, puoi esplorare costruttori più interessanti. Questa versione memorizza la sua posizione:

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

Ora puoi creare un cerchio senza argomenti, un raggio singolo o le coordinate x e y accanto al raggio. Questo è lo stesso tipo di sovraccarico supportato da Java per qualsiasi metodo.

Concatenamento costruttore

Che ne dici di creare un Cerchio, basato su un altro? Questo ci darebbe la possibilità di copiare facilmente i cerchi. Osserva il seguente blocco:

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

Funzionerà, ma ripete del codice inutilmente. Poiché la classe Circle ha già un costruttore che gestisce le singole proprietà, puoi chiamarlo invece usando il questo parola chiave:

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

Questa è una forma di concatenamento di costruttori, che chiama un costruttore da un altro. Utilizza meno codice e aiuta a centralizzare un'operazione anziché duplicarla.

Chiamare il Costruttore Genitore

L'altra forma di concatenamento del costruttore si verifica quando un costruttore chiama un costruttore della sua classe genitore. Questo può essere esplicito o implicito. Per chiamare esplicitamente un costruttore genitore, usa il super parola chiave:

super(x, y);

Immagina una classe Shape che agisce come genitore del Circle:

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

Gestisce il posizionamento comune per tutte le forme poiché questa è la funzionalità che tutti condividono. Ora la classe Circle può delegare la gestione della posizione al suo genitore:

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 costruzione della superclasse è un aspetto molto importante di ereditarietà in Java . La lingua lo applica per impostazione predefinita se non chiami esplicitamente super nei tuoi costruttori

Modificatori di accesso sui costruttori

I costruttori possono includere un modificatore di accesso nella loro firma. Come altri metodi, questo definisce quali tipi di chiamante possono accedere al costruttore:

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

Questo è un esempio più complicato, quindi fai attenzione a capirlo:

  • La classe non è astratta, quindi è possibile creare un'istanza da essa.
  • Il costruttore è privato, quindi solo questa classe stessa può creare una nuova istanza.
  • Tramite una proprietà e un metodo statici, la classe espone una singola istanza univoca ai chiamanti.

Usa i costruttori in Java per creare oggetti

I costruttori sono vitali per la programmazione orientata agli oggetti. Ti permettono di creare oggetti, il che è essenziale!

In Java, i costruttori assomigliano ad altri metodi e funzionano più o meno allo stesso modo. Dovresti ricordare le regole speciali sui costruttori predefiniti, l'overload e il concatenamento dei costruttori. Se i costruttori sono nuovi per te, potresti voler leggere gli altri concetti fondamentali di Java che dovresti imparare quando inizi.

Condividere Condividere Tweet E-mail 10 concetti fondamentali di Java che dovresti imparare quando inizi

Sia che tu stia scrivendo una GUI, sviluppando software lato server o un'applicazione mobile utilizzando Android, l'apprendimento di Java ti sarà utile. Ecco alcuni concetti fondamentali di Java per aiutarti a iniziare.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Giava
  • Suggerimenti per la codifica
Circa l'autore Bobby Jack(58 articoli pubblicati)

Bobby è un appassionato di tecnologia che ha lavorato come sviluppatore software per quasi due decenni. È appassionato di giochi, lavora come editor di recensioni presso Switch Player Magazine ed è immerso in tutti gli aspetti dell'editoria online e dello sviluppo web.

puoi usare gli airpod con Android?
Altro da Bobby Jack

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti