Chiama un altro costruttore in Java
- Chiama un costruttore da un altro all’interno della stessa classe in Java
- Chiama un costruttore da un altro dalla classe base in Java
In Java, la sequenza di invocazione dei costruttori durante l’inizializzazione dell’oggetto è chiamata concatenamento dei costruttori. Viene utilizzato quando si desidera richiamare un costruttore dopo l’altro utilizzando un’istanza.
Chiama un costruttore da un altro all’interno della stessa classe in Java
Quando vogliamo chiamare un costruttore da un altro costruttore all’interno della stessa classe, usiamo la parola chiave this
. Un’espressione che utilizza la parola chiave this
deve essere la prima riga del costruttore. L’ordine non ha importanza nel concatenamento del costruttore. Deve avere almeno un costruttore che non utilizzi la parola chiave this
.
Nell’esempio seguente, abbiamo una classe Test
che ha 3 costruttori. Uno è quello di default senza parametri, mentre gli altri due sono parametrizzati. Nel metodo main
, istanziamo l’oggetto classe con la parola chiave new
senza che sia passato alcun parametro.
Richiama il costruttore predefinito Test()
che reindirizza la chiamata al costruttore parametrizzato Test(String name)
usando this("Steve")
. Il costruttore Test(String name)
reindirizza ulteriormente la chiamata all’altro costruttore parametrizzato Test(int age, String place)
usando this(30,"Texas")
.
Le istruzioni all’interno del Test(int age, String place)
vengono eseguite per prime. Dopodiché, vengono eseguite le restanti istruzioni del costruttore Test(String name)
. Infine, viene eseguita l’istruzione rimanente del costruttore predefinito e l’oggetto viene inizializzato correttamente.
public class Test {
Test() {
this("Steve");
System.out.println("Default Constructor");
}
Test(String name) {
this(30, "Texas");
System.out.println("Name - " + name);
}
Test(int age, String place) {
System.out.println("Age- " + age + ", place- " + place);
}
public static void main(String[] args) {
Test test = new Test();
}
}
Produzione:
Age- 30, place- Texas
Name - Steve
Default Constructor
Chiama un costruttore da un altro dalla classe base in Java
Quando c’è più di una classe con la relazione di ereditarietà, dobbiamo usare la parola chiave super
per chiamare il costruttore della classe genitore dalla classe figlia. A differenza della parola chiave questo
, la JVM inserisce automaticamente la parola chiave super
.
La classe base è la classe genitore che viene estesa dalla classe derivata. Il metodo principale in cui istanziamo l’oggetto classe invoca il costruttore predefinito della stessa classe, che reindirizza ulteriormente la chiamata al costruttore parametrizzato della classe figlia usando this("Adam")
.
super(name)
invoca il costruttore parametrizzato Base(String name)
della classe Base
. Il costruttore predefinito della classe Base
viene invocato usando this()
. Anche la variabile di classe viene inizializzata qui usando this.name = name
.
Viene eseguito il codice all’interno del costruttore predefinito della classe Base
. Successivamente vengono eseguite le istruzioni all’interno del costruttore parametrizzato Base(String name)
. Infine, viene eseguita la restante istruzione all’interno del costruttore parametrizzato della classe Derived
.
class Base {
String name;
Base() {
System.out.println("Default Constructor Base Class");
}
Base(String name) {
this();
this.name = name;
System.out.println("Parameterized Constructor Base Class called:- " + name);
}
}
class Derived extends Base {
Derived() {
this("Adam");
}
Derived(String name) {
super(name);
System.out.println("Parameterized Constructor Derived Class called: " + name);
}
public static void main(String[] args) {
Derived derived = new Derived();
}
}
Produzione:
Default Constructor Base Class
Parameterized Constructor Base Class called:- Adam
Parameterized Constructor Derived Class called: Adam
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn