logo

Constructors Java

Els constructors o constructors de Java en Java són una terminologia utilitzada per construir alguna cosa als nostres programes. Un constructor en Java és un mètode especial que s'utilitza per inicialitzar objectes. El constructor es crida quan es crea un objecte d'una classe. Es pot utilitzar per establir valors inicials per als atributs de l'objecte.

Què són els constructors a Java?

A Java, un constructor és un bloc de codis similar al mètode. Es crida quan es crea una instància de la classe. En el moment de cridar al constructor, la memòria de l'objecte s'assigna a la memòria. És un tipus especial de mètode que s'utilitza per inicialitzar l'objecte. Cada vegada que es crea un objecte amb la paraula clau new(), es crida almenys un constructor.

Exemple de constructor Java

A continuació es mostra la implementació de Java Constructors:



Java
// 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();  } }>

Sortida
Constructor Called>

Nota: No és necessari escriure un constructor per a una classe. És perquè el compilador java crea un constructor predeterminat (constructor sense arguments) si la vostra classe no en té cap.

Com es diferencien els constructors de Java dels mètodes Java?

  • Els constructors han de tenir el mateix nom que la classe dins de la qual es defineix, no és necessari per al mètode en Java.
  • Els constructors no retornen cap tipus mentre que els mètodes tenen el tipus de retorn o buit si no retorna cap valor.
  • Els constructors només es criden una vegada en el moment de la creació de l'objecte, mentre que els mètodes es poden cridar qualsevol nombre de vegades.

Ara anem a trobar la sintaxi del constructor que s'invoca en el moment de la creació de l'objecte o la instància.

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 primera línia d'un constructor és una crida a super() o this(), (una trucada a un constructor d'una superclasse o un constructor sobrecarregat), si no escriviu la crida a super al vostre constructor, el compilador us proporcionarà una crida sense argument a super a la primera línia del vostre codi, cal cridar al superconstructor per crear un objecte:

Si creieu que la vostra classe no és una subclasse, en realitat ho és, cada classe de Java és la subclasse d'una classe objecte fins i tot si no dius amplia l'objecte a la teva definició de classe.

Necessitat de constructors a Java

Penseu en una caixa. Si parlem d'una classe de caixa, llavors tindrà algunes variables de classe (per exemple, longitud, amplada i alçada). Però quan es tracta de crear el seu objecte (és a dir, la caixa ara existirà a la memòria de l'ordinador), aleshores hi pot haver una caixa sense cap valor definit per a les seves dimensions? La resposta és N O .
Així, els constructors s'utilitzen per assignar valors a les variables de classe en el moment de la creació de l'objecte, ja sigui fet explícitament pel programador o pel mateix Java (constructor per defecte).

bucle millorat java

Quan es diu Java Constructor?

Cada vegada que es crea un objecte amb a nou () paraula clau, s'invoca almenys un constructor (podria ser el constructor predeterminat) per assignar valors inicials al membres de dades de la mateixa classe. Les regles per escriure constructors són les següents:

  • El(s) constructor(s) d'una classe ha de tenir el mateix nom que el nom de la classe en què resideix.
  • Un constructor a Java no pot ser abstracte, final, estàtic o sincronitzat.
  • Els modificadors d'accés es poden utilitzar a la declaració del constructor per controlar el seu accés, és a dir, quina altra classe pot cridar el constructor.

Per tant, hem après que els constructors s'utilitzen per inicialitzar l'estat de l'objecte. M'agrada mètodes , un constructor també conté una col·lecció d'instruccions (és a dir, instruccions) que s'executen en el moment de la creació de l'objecte.

Tipus de constructors en Java

Ara és el moment correcte per discutir els tipus de constructor, de manera que principalment hi ha tres tipus de constructors a Java que s'esmenten a continuació:

  • Constructor per defecte
  • Constructor parametritzat
  • Copia el constructor

1. Constructor per defecte en Java

Un constructor que no té paràmetres es coneix com a constructor predeterminat. Un constructor predeterminat és invisible. I si escrivim un constructor sense arguments, el compilador no crea un constructor per defecte. Es treu. S'està sobrecarregant i s'anomena constructor parametritzat. El constructor predeterminat ha canviat al constructor parametritzat. Però el constructor parametritzat no pot canviar el constructor predeterminat. El constructor per defecte pot ser implícit o explícit. Si no definim explícitament, obtenim un constructor predeterminat implícit. Si escrivim manualment un constructor, se substitueix l'implícit.

if i else en bash

Exemple:

Java
// 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();  } }>

Sortida
Default constructor>

Nota: El constructor per defecte proporciona els valors per defecte a l'objecte com 0, nul, etc., depenent del tipus.

2. Constructor parametritzat en Java

Un constructor que té paràmetres es coneix com a constructor parametritzat. Si volem inicialitzar camps de la classe amb els nostres propis valors, utilitzeu un constructor parametritzat.

Exemple:

Java
// 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);  } }>

Sortida
GeekName :Avinash and GeekId :68>

Recordeu: el constructor retorna algun valor?

índex de llista

No hi ha declaracions de valor de retorn al constructor, però el constructor retorna la instància de classe actual. Podem escriure 'retorn' dins d'un constructor.

Ara el tema més important que entra en joc és la forta incorporació d'OOPS amb constructors coneguts com a sobrecàrrega de constructors. Igual que els mètodes, podem sobrecarregar els constructors per crear objectes de diferents maneres. El compilador diferencia els constructors en funció del nombre de paràmetres, els tipus de paràmetres i l'ordre dels paràmetres.

Exemple:

Java
// 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);  } }>

Sortida
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Copia el constructor en Java

A diferència d'altres constructors, el constructor de còpia es passa amb un altre objecte que copia les dades disponibles de l'objecte passat a l'objecte acabat de crear.

Nota: A Java, no hi ha un constructor de còpia incorporat disponible com en altres llenguatges de programació com C++, en canvi podem crear el nostre propi constructor de còpia passant l'objecte de la mateixa classe a l'altra instància (objecte) de la classe.

Exemple:

Java
// 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);  } }>

Sortida
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Per conèixer en profunditat els constructors, hi ha dos conceptes que s'han utilitzat àmpliament, com s'enumeren a continuació:

  • Encadenament de constructors
  • Copia el constructor

Preguntes freqüents a Java Constructors

1. Què és un constructor a Java?

Un constructor en Java és un mètode especial utilitzat per inicialitzar objectes.

2. Pot ser privat un constructor Java?

Sí, un constructor es pot declarar privat. S'utilitza un constructor privat per restringir la creació d'objectes.