Costruttori Java o costruttori in Java è una terminologia utilizzata per costruire qualcosa nei nostri programmi. Un costruttore in Java è a metodo speciale utilizzato per inizializzare gli oggetti. Il costruttore viene chiamato quando viene creato un oggetto di una classe. Può essere utilizzato per impostare i valori iniziali per gli attributi dell'oggetto.
Cosa sono i costruttori in Java?
In Java, un costruttore è un blocco di codici simile al metodo. Viene chiamato quando viene creata un'istanza della classe. 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.
Esempio di costruttore Java
Di seguito è riportata l'implementazione dei costruttori Java:
Giava // Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks { // Constructor Geeks() { super(); System.out.println('Constructor Called'); } // main function public static void main(String[] args) { Geeks geek = new Geeks(); } }>
Produzione
Constructor Called>
Nota: Non è necessario scrivere un costruttore per una classe. È perché il compilatore Java crea un costruttore predefinito (costruttore senza argomenti) se la tua classe non ne ha.
In che modo i costruttori Java sono diversi dai metodi Java?
- I costruttori devono avere lo stesso nome della classe all'interno della quale è definito, non è necessario per il metodo in Java.
- I costruttori non restituiscono alcun tipo mentre i metodi hanno il tipo restituito o vuoto se non restituisce alcun valore.
- I costruttori vengono chiamati solo una volta al momento della creazione dell'oggetto mentre i metodi possono essere chiamati un numero qualsiasi di volte.
Ora definiamo la sintassi per il costruttore invocato al momento della creazione dell'oggetto o dell'istanza.
class Geek { ....... // A Constructor Geek() { } ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>
La prima riga di un costruttore è una chiamata a super() o this(), (una chiamata a un costruttore di una superclasse o un costruttore sovraccaricato), se non digiti la chiamata a super nel tuo costruttore il il compilatore ti fornirà una chiamata senza argomento a super nella prima riga del tuo codice, il super costruttore deve essere chiamato per creare un oggetto:
Se pensi che la tua classe non sia una sottoclasse, in realtà lo è, ogni classe in Java è la sottoclasse di una classe oggetto anche se non dici extends object nella definizione della tua classe.
Necessità di costruttori in Java
Pensa a una scatola. Se parliamo di una classe box allora avrà alcune variabili di classe (diciamo lunghezza, larghezza e altezza). Ma quando si tratta di creare il suo oggetto (cioè Box ora esisterà nella memoria del computer), allora può essere lì una scatola senza alcun valore definito per le sue dimensioni? La risposta è N O .
Quindi i costruttori vengono utilizzati per assegnare valori alle variabili della classe al momento della creazione dell'oggetto, eseguita esplicitamente dal programmatore o da Java stesso (costruttore predefinito).
Java è uguale
Quando viene chiamato il costruttore Java?
Ogni volta che un oggetto viene creato utilizzando a nuovo() parola chiave, almeno un costruttore (potrebbe essere il costruttore predefinito) viene richiamato per assegnare i valori iniziali alla parola chiave membri dei dati della stessa classe. Le regole per scrivere i costruttori sono le seguenti:
- Il costruttore o i costruttori di una classe devono avere lo stesso nome del nome della classe in cui risiede.
- Un costruttore in Java non può essere astratto, finale, statico o sincronizzato.
- I modificatori di accesso possono essere utilizzati nella dichiarazione del costruttore per controllarne l'accesso, ovvero quale altra classe può chiamare il costruttore.
Finora abbiamo imparato che i costruttori vengono utilizzati per inizializzare lo stato dell'oggetto. Come metodi , un costruttore contiene anche una raccolta di istruzioni (ovvero istruzioni) che vengono eseguite al momento della creazione dell'oggetto.
Tipi di costruttori in Java
Ora è il momento giusto per discutere i tipi di costruttore, quindi principalmente ci sono tre tipi di costruttori in Java menzionati di seguito:
- Costruttore predefinito
- Costruttore parametrizzato
- Copia costruttore
1. Costruttore predefinito in Java
Un costruttore che non ha parametri è noto come costruttore predefinito. Un costruttore predefinito è invisibile. E se scriviamo un costruttore senza argomenti, il compilatore non crea un costruttore predefinito. Viene tolto. Viene sovraccaricato e chiamato costruttore parametrizzato. Il costruttore predefinito è stato modificato nel costruttore con parametri. Ma il costruttore con parametri non può modificare il costruttore predefinito. Il costruttore predefinito può essere implicito o esplicito. Se non definiamo esplicitamente, otteniamo un costruttore predefinito implicito. Se scriviamo manualmente un costruttore, quello implicito viene sovrascritto.
ordinamento della selezione in Java
Esempio:
Giava // Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG { // Default Constructor GFG() { System.out.println('Default constructor'); } // Driver function public static void main(String[] args) { GFG hello = new GFG(); } }>
Produzione
Default constructor>
Nota: Il costruttore predefinito fornisce i valori predefiniti all'oggetto come 0, null, ecc. a seconda del tipo.
2. Costruttore parametrizzato in Java
Un costruttore che dispone di parametri è noto come costruttore con parametri. Se vogliamo inizializzare i campi della classe con i nostri valori, utilizziamo un costruttore parametrizzato.
Esempio:
Giava // Java Program for Parameterized Constructor import java.io.*; class Geek { // data members of the class. String name; int id; Geek(String name, int id) { this.name = name; this.id = id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); } }>
Produzione
GeekName :Avinash and GeekId :68>
Ricorda: il costruttore restituisce qualche valore?
lessicograficamenteNon ci sono istruzioni sul valore restituito nel costruttore, ma il costruttore restituisce l'istanza della classe corrente. Possiamo scrivere 'return' all'interno di un costruttore.
Ora l'argomento più importante che entra in gioco è la forte incorporazione di OOPS con costruttori noti come sovraccarico dei costruttori. Proprio come i metodi, possiamo sovraccaricare i costruttori per creare oggetti in diversi modi. Il compilatore differenzia i costruttori in base al numero di parametri, ai tipi di parametri e all'ordine dei parametri.
Esempio:
Giava // Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek { // constructor with one argument Geek(String name) { System.out.println('Constructor with one ' + 'argument - String : ' + name); } // constructor with two arguments Geek(String name, int age) { System.out.println( 'Constructor with two arguments : ' + ' String and Integer : ' + name + ' ' + age); } // Constructor with one argument but with different // type than previous.. Geek(long id) { System.out.println( 'Constructor with one argument : ' + 'Long : ' + id); } } class GFG { public static void main(String[] args) { // Creating the objects of the class named 'Geek' // by passing different arguments // Invoke the constructor with one argument of // type 'String'. Geek geek2 = new Geek('Shikhar'); // Invoke the constructor with two arguments Geek geek3 = new Geek('Dharmesh', 26); // Invoke the constructor with one argument of // type 'Long'. Geek geek4 = new Geek(325614567); } }>
Produzione
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>
3. Copia il costruttore in Java
A differenza di altri costruttori, il costruttore di copia viene passato con un altro oggetto che copia i dati disponibili dall'oggetto passato all'oggetto appena creato.
Nota: In Java, non è disponibile un costruttore di copie integrato come in altri linguaggi di programmazione come C++, invece possiamo creare il nostro costruttore di copie passando l'oggetto della stessa classe all'altra istanza (oggetto) della classe.
Esempio:
Giava // Java Program for Copy Constructor import java.io.*; class Geek { // data members of the class. String name; int id; // Parameterized Constructor Geek(String name, int id) { this.name = name; this.id = id; } // Copy Constructor Geek(Geek obj2) { this.name = obj2.name; this.id = obj2.id; } } class GFG { public static void main(String[] args) { // This would invoke the parameterized constructor. System.out.println('First Object'); Geek geek1 = new Geek('Avinash', 68); System.out.println('GeekName :' + geek1.name + ' and GeekId :' + geek1.id); System.out.println(); // This would invoke the copy constructor. Geek geek2 = new Geek(geek1); System.out.println( 'Copy Constructor used Second Object'); System.out.println('GeekName :' + geek2.name + ' and GeekId :' + geek2.id); } }>
Produzione
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>
Per conoscere a fondo i costruttori ci sono due concetti ampiamente utilizzati che elenchiamo di seguito:
- Concatenamento del costruttore
- Copia costruttore
Domande frequenti sui costruttori Java
1. Cos'è un costruttore in Java?
Un costruttore in Java è a metodo speciale utilizzato per inizializzare gli oggetti.
2. Un costruttore Java può essere privato?
Sì, un costruttore può essere dichiarato privato. Un costruttore privato viene utilizzato per limitare la creazione di oggetti.