logo

Per què utilitzem el constructor a Java?

En aquest apartat, aprendrem per què utilitzem un constructor a Java i quin és el propòsit i necessitat del constructor . Juntament amb això, també veurem el tipus de constructor.

A Java, el constructor és semblant al mètode. La propietat del constructor és que ha de tenir el mateix nom que el nom de la classe. No té cap tipus de retorn. No necessitem cridar el constructor manualment. Invoca automàticament implícitament durant la instanciació.

En altres paraules, un constructor és un mètode que es crida en temps d'execució durant la creació de l'objecte mitjançant l'operador new. La JVM l'anomena automàticament quan creem un objecte. Quan no definim un constructor a la classe, el constructor per defecte sempre està present de manera invisible a la classe. Hi ha els següents motius per utilitzar constructors:

  • Utilitzem constructors per inicialitzar l'objecte amb l'estat predeterminat o inicial. És possible que els valors per defecte de les primitives no siguin els que busqueu.
  • Un altre motiu per utilitzar el constructor és que informa sobre les dependències. En altres paraules, utilitzant el constructor, podem demanar a l'usuari d'aquesta classe les dependències necessàries.
  • Podem esbrinar què necessita per utilitzar aquesta classe, només mirant el constructor.

En resum, fem servir el constructor per inicialitzar la variable d'instància de la classe.

Tipus de constructors

Hi ha dos tipus de constructors a Java:

java llarg a cadena
  • Constructor parametritzat
  • Constructor per defecte

Constructor parametritzat

Com el seu nom indica, accepta arguments (paràmetres). El constructor parametritzat s'utilitza si volem inicialitzar dinàmicament les variables d'instància amb els valors especificats en el moment de la instanciació.

Exemple

 public class Demo { int i; //parameterized constructor public demo(int i) { this.i = i; } } 

Constructor per defecte

El constructor per defecte no accepta cap paràmetre. S'utilitza si volem inicialitzar les variables d'instància amb determinats valors. Cada classe Java té un constructor per defecte, de manera invisible. Per tant, no hem de definir-ho, per separat. Recordeu que el constructor per defecte s'elimina de la classe quan creem un constructor parametritzat.

Exemple

 public class Demo { int i; //default constructor public demo() { //the value of i is fixed this.i = 100; } } 

Nota: Quan no proporcionem cap constructor a un programa Java, el compilador Java escriu el constructor per defecte en nom del programador i compila el programa. Inicialitza les variables d'instància amb els valors per defecte. Per exemple, 0 per a sencer, 0,0 per a flotant i nul per a String.

Creem un programa i utilitzem el constructor predeterminat i parametritzat.

A la classe Employee, hem creat dos constructors, un és el constructor predeterminat i l'altre és el constructor parametritzat. La classe Employee té dues variables privades, el nom i l'edat. En el mètode principal, hem instanciat la classe i hem utilitzat els dos constructors.

repositori maven

Employee.java

 import java.util.Scanner; public class Employee { private String name; private int age; //parameterized constructor public Employee(String name, int age) { this.name =name; this.age = age; } //Default constructor public Employee() { this.name = 'William'; this.age = 28; } //method for printing the values public void show() { System.out.println('Name of the employee: '+this.name); System.out.println('Age of the employee: '+this.age); } //main method public static void main(String args[]) { Employee e=new Employee(); //Reading values from user Scanner sc = new Scanner(System.in); System.out.println('Enter the name of the employee: '); String name = sc.nextLine(); System.out.println('Enter the age of the employee: '); int age = sc.nextInt(); System.out.println(' '); //Calling the parameterized constructor System.out.println('Show() method for the parameterized constructor: '); new Employee(name, age).show(); //Calling the default constructor System.out.println('Show() method for the default constructor: '); new Employee().show(); } } 

Sortida:

 Enter the name of the employee: David Enter the age of the employee: 27 Show() method for the parameterized constructor: Name of the employee: David Age of the employee: 27 Show() method for the default constructor: Name of the employee: William Age of the employee: 28