- Tipus de constructors
- Sobrecàrrega del constructor
- El constructor retorna algun valor?
- Copiar els valors d'un objecte en un altre
- 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
- El nom del constructor ha de ser el mateix que el nom de la seva classe
- Un constructor no ha de tenir cap tipus de retorn explícit
- 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:
- Constructor per defecte (constructor sense arguments)
- Constructor parametritzat
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.
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 Java | Mè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. |
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.