logo

Constructors en Java

  1. Tipus de constructors
    1. Constructor per defecte
    2. Constructor parametritzat
  2. Sobrecàrrega del constructor
  3. El constructor retorna algun valor?
  4. Copiar els valors d'un objecte en un altre
  5. El constructor realitza altres tasques en lloc de la inicialització

En Java , un constructor és un bloc de codis similar al mètode. S'anomena quan una instància del classe es crea. 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.

Crida a un constructor predeterminat si no hi ha cap constructor disponible a la classe. En aquest cas, el compilador Java proporciona un constructor predeterminat per defecte.

Hi ha dos tipus de constructors a Java: el constructor sense arguments i el constructor parametritzat.

Nota: S'anomena constructor perquè construeix els valors en el moment de la creació de l'objecte. No és necessari escriure un constructor per a una classe. És perquè el compilador java crea un constructor predeterminat si la vostra classe no en té cap.

Regles per crear un constructor Java

Hi ha dues regles definides per al constructor.

java elseif
  1. El nom del constructor ha de ser el mateix que el nom de la seva classe
  2. Un constructor no ha de tenir cap tipus de retorn explícit
  3. Un constructor Java no pot ser abstracte, estàtic, final i sincronitzat

Nota: podem utilitzar modificadors d'accés mentre es declara un constructor. Controla la creació d'objectes. En altres paraules, podem tenir un constructor privat, protegit, públic o predeterminat a Java.

Tipus de constructors Java

Hi ha dos tipus de constructors a Java:

  1. Constructor per defecte (constructor sense arguments)
  2. Constructor parametritzat
Constructors Java

Constructor per defecte de Java

Un constructor s'anomena 'Constructor per defecte' quan no té cap paràmetre.

Sintaxi del constructor predeterminat:

 (){} 

Exemple de constructor predeterminat

En aquest exemple, estem creant el constructor no-arg a la classe Bike. S'invocarà en el moment de la creació de l'objecte.
 //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(); } } 
Prova-ho ara

Sortida:

 Bike is created 

Regla: si no hi ha cap constructor en una classe, el compilador crea automàticament un constructor per defecte.

Constructor per defecte de Java

P) Quin és l'objectiu d'un constructor predeterminat?

El constructor predeterminat s'utilitza per proporcionar els valors per defecte a l'objecte com 0, null, etc., depenent del tipus.

Exemple de constructor per defecte que mostra els valors per defecte

 //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(); } } 
Prova-ho ara

Sortida:

 0 null 0 null 

Explicació: A la classe anterior, no esteu creant cap constructor, de manera que el compilador us proporciona un constructor predeterminat. Aquí 0 i valors nuls es proporcionen per defecte del constructor.


Constructor parametritzat Java

Un constructor que té un nombre específic de paràmetres s'anomena constructor parametritzat.

Per què utilitzar el constructor parametritzat?

El constructor parametritzat s'utilitza per proporcionar diferents valors a diferents objectes. Tanmateix, també podeu proporcionar els mateixos valors.

Exemple de constructor parametritzat

En aquest exemple, hem creat el constructor de la classe Student que té dos paràmetres. Podem tenir qualsevol nombre de paràmetres al constructor.

 //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(); } } 
Prova-ho ara

Sortida:

 111 Karan 222 Aryan 

Sobrecàrrega del constructor a Java

A Java, un constructor és com un mètode però sense tipus de retorn. També es pot sobrecarregar com els mètodes Java.

Constructor sobrecàrrega en Java és una tècnica de tenir més d'un constructor amb diferents llistes de paràmetres. Estan disposats de manera que cada constructor realitza una tasca diferent. Es diferencien pel compilador pel nombre de paràmetres de la llista i els seus tipus.

dhanashree verma

Exemple de sobrecàrrega del constructor

 //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(); } } 
Prova-ho ara

Sortida:

 111 Karan 0 222 Aryan 25 

Diferència entre constructor i mètode a Java

Hi ha moltes diferències entre constructors i mètodes. Es donen a continuació.

Constructor JavaMètode Java
S'utilitza un constructor per inicialitzar l'estat d'un objecte.S'utilitza un mètode per exposar el comportament d'un objecte.
Un constructor no ha de tenir un tipus de retorn.Un mètode ha de tenir un tipus de retorn.
El constructor s'invoca implícitament.El mètode s'invoca de manera explícita.
El compilador Java proporciona un constructor predeterminat si no teniu cap constructor en una classe.El compilador no proporciona el mètode en cap cas.
El nom del constructor ha de ser el mateix que el nom de la classe.El nom del mètode pot ser o no el mateix que el nom de la classe.

Constructors Java vs. Mètodes

Java Copy Constructor

No hi ha un constructor de còpia a Java. Tanmateix, podem copiar els valors d'un objecte a un altre com un constructor de còpia en C++.

Hi ha moltes maneres de copiar els valors d'un objecte a un altre a Java. Ells són:

  • Per constructor
  • Assignant els valors d'un objecte a un altre
  • Mitjançant el mètode clone() de la classe Object

En aquest exemple, copiarem els valors d'un objecte en un altre mitjançant el constructor 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(); } } 
Prova-ho ara

Sortida:

 111 Karan 111 Karan 

Còpia de valors sense constructor

Podem copiar els valors d'un objecte en un altre assignant els valors dels objectes a un altre objecte. En aquest cas, no cal crear el constructor.

 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(); } } 
Prova-ho ara

Sortida:

 111 Karan 111 Karan 

P) El constructor retorna algun valor?

Sí, és la instància de classe actual (no podeu utilitzar el tipus de retorn però retorna un valor).


El constructor pot realitzar altres tasques en lloc de la inicialització?

Sí, com la creació d'objectes, l'inici d'un fil, la crida d'un mètode, etc. Podeu realitzar qualsevol operació al constructor com ho feu al mètode.


Hi ha classe de constructor a Java?

Sí.


Quin és l'objectiu de la classe Constructor?

Java proporciona una classe Constructor que es pot utilitzar per obtenir la informació interna d'un constructor a la classe. Es troba al paquet java.lang.reflect.