- Tipi di costruttori
- Sovraccarico del costruttore
- Il costruttore restituisce qualche valore?
- Copiare i valori di un oggetto in un altro
- Il costruttore esegue altre attività invece dell'inizializzazione
In Giava , un costruttore è un blocco di codici simile al metodo. Si chiama quando un'istanza del classe è creato. Al momento della chiamata al costruttore, la memoria per l'oggetto viene allocata nella memoria.
È un tipo speciale di metodo utilizzato per inizializzare l'oggetto.
Ogni volta che un oggetto viene creato utilizzando la parola chiave new(), viene chiamato almeno un costruttore.
Chiama un costruttore predefinito se non è disponibile alcun costruttore nella classe. In tal caso, il compilatore Java fornisce un costruttore predefinito per impostazione predefinita.
Esistono due tipi di costruttori in Java: costruttore no-arg e costruttore con parametri.
Nota: Si chiama costruttore perché costruisce i valori al momento della creazione dell'oggetto. Non è necessario scrivere un costruttore per una classe. È perché il compilatore Java crea un costruttore predefinito se la tua classe non ne ha.
Regole per la creazione del costruttore Java
Ci sono due regole definite per il costruttore.
Linux quale
- Il nome del costruttore deve essere uguale al nome della classe
- Un costruttore non deve avere un tipo restituito esplicito
- Un costruttore Java non può essere astratto, statico, finale e sincronizzato
Nota: possiamo usare modificatori di accesso durante la dichiarazione di un costruttore. Controlla la creazione dell'oggetto. In altre parole, in Java possiamo avere un costruttore privato, protetto, pubblico o predefinito.
Tipi di costruttori Java
In Java esistono due tipi di costruttori:
- Costruttore predefinito (costruttore no-arg)
- Costruttore parametrizzato
Costruttore predefinito Java
Un costruttore è chiamato 'Costruttore predefinito' quando non ha alcun parametro.
Sintassi del costruttore predefinito:
(){}
Esempio di costruttore predefinito
In questo esempio stiamo creando il costruttore no-arg nella classe Bike. Verrà richiamato al momento della creazione dell'oggetto. |
//Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } }Provalo adesso
Produzione:
Bike is created
Regola: se non è presente alcun costruttore in una classe, il compilatore crea automaticamente un costruttore predefinito.
D) Qual è lo scopo di un costruttore predefinito?
Il costruttore predefinito viene utilizzato per fornire i valori predefiniti all'oggetto come 0, null, ecc., a seconda del tipo.
Esempio di costruttore predefinito che visualizza i valori predefiniti
//Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } }Provalo adesso
Produzione:
0 null 0 null
Spiegazione: Nella classe precedente, non stai creando alcun costruttore, quindi il compilatore ti fornisce un costruttore predefinito. Qui i valori 0 e null sono forniti dal costruttore predefinito.
Costruttore con parametri Java
Un costruttore che ha un numero specifico di parametri è chiamato costruttore parametrizzato.
Perché utilizzare il costruttore parametrizzato?
Il costruttore con parametri viene utilizzato per fornire valori diversi a oggetti distinti. Tuttavia, puoi anche fornire gli stessi valori.
Esempio di costruttore parametrizzato
In questo esempio, abbiamo creato il costruttore della classe Student che ha due parametri. Possiamo avere un numero qualsiasi di parametri nel costruttore.
//Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } }Provalo adesso
Produzione:
111 Karan 222 Aryan
Sovraccarico del costruttore in Java
In Java, un costruttore è proprio come un metodo ma senza tipo restituito. Può anche essere sovraccaricato come i metodi Java.
Costruttore sovraccarico in Java è una tecnica che consente di avere più di un costruttore con elenchi di parametri diversi. Sono disposti in modo che ogni costruttore svolga un compito diverso. Sono differenziati dal compilatore in base al numero di parametri nell'elenco e ai loro tipi.
Esempio di sovraccarico del costruttore
//Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } }Provalo adesso
Produzione:
111 Karan 0 222 Aryan 25
Differenza tra costruttore e metodo in Java
Esistono molte differenze tra costruttori e metodi. Sono riportati di seguito.
costruttore in Java
Costruttore Java | Metodo Java |
---|---|
Un costruttore viene utilizzato per inizializzare lo stato di un oggetto. | Un metodo viene utilizzato per esporre il comportamento di un oggetto. |
Un costruttore non deve avere un tipo restituito. | Un metodo deve avere un tipo restituito. |
Il costruttore viene invocato implicitamente. | Il metodo viene invocato esplicitamente. |
Il compilatore Java fornisce un costruttore predefinito se non è presente alcun costruttore in una classe. | Il metodo non viene comunque fornito dal compilatore. |
Il nome del costruttore deve essere uguale al nome della classe. | Il nome del metodo può essere uguale o meno al nome della classe. |
Costruttore di copie Java
Non esiste un costruttore di copie in Java. Tuttavia, possiamo copiare i valori da un oggetto a un altro come il costruttore di copie in C++.
Esistono molti modi per copiare i valori di un oggetto in un altro in Java. Sono:
- Per costruttore
- Assegnando i valori di un oggetto a un altro
- Con il metodo clone() della classe Object
In questo esempio, copieremo i valori di un oggetto in un altro utilizzando il costruttore Java.
//Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } }Provalo adesso
Produzione:
111 Karan 111 Karan
Copia di valori senza costruttore
Possiamo copiare i valori di un oggetto in un altro assegnando i valori degli oggetti a un altro oggetto. In questo caso non è necessario creare il costruttore.
class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } }Provalo adesso
Produzione:
111 Karan 111 Karan
D) Il costruttore restituisce qualche valore?
Sì, è l'istanza della classe corrente (non è possibile utilizzare il tipo restituito ma restituisce un valore).
Il costruttore può eseguire altre attività invece dell'inizializzazione?
Sì, come la creazione di oggetti, l'avvio di un thread, la chiamata di un metodo, ecc. Puoi eseguire qualsiasi operazione nel costruttore mentre la esegui nel metodo.
Esiste una classe Costruttore in Java?
SÌ.
Qual è lo scopo della classe Costruttore?
Java fornisce una classe Costruttore che può essere utilizzata per ottenere le informazioni interne di un costruttore nella classe. Si trova nel pacchetto java.lang.reflect.