logo

Sobrecarga de constructores en Java

En Java, podemos sobrecargar constructores como métodos. La sobrecarga de constructores se puede definir como el concepto de tener más de un constructor con diferentes parámetros para que cada constructor pueda realizar una tarea diferente.

Considera lo siguiente Java programa, en el que hemos utilizado diferentes constructores en la clase.

java fecha local hora

Ejemplo

 public class Student { //instance variables of the class int id; String name; Student(){ System.out.println('this a default constructor'); } Student(int i, String n){ id = i; name = n; } public static void main(String[] args) { //object creation Student s = new Student(); System.out.println('
Default Constructor values: 
'); System.out.println('Student Id : '+s.id + '
Student Name : '+s.name); System.out.println('
Parameterized Constructor values: 
'); Student student = new Student(10, 'David'); System.out.println('Student Id : '+student.id + '
Student Name : '+student.name); } } 

Producción:

 this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David 

En el ejemplo anterior, la clase Estudiante constructor está sobrecargado con dos constructores diferentes, es decir, predeterminado y parametrizado.

Aquí debemos comprender el propósito de la sobrecarga del constructor. A veces, necesitamos utilizar varios constructores para inicializar los diferentes valores de la clase.

También debemos notar que el compilador de Java invoca un constructor predeterminado cuando no usamos ningún constructor en la clase. Sin embargo, el constructor predeterminado no se invoca si hemos utilizado algún constructor en la clase, ya sea predeterminado o parametrizado. En este caso, el compilador de Java genera una excepción que indica que el constructor no está definido.

educación shloka mehta

Considere el siguiente ejemplo, que contiene el error ya que el objeto Colleges no se puede crear usando el constructor predeterminado ahora porque no contiene ninguno.

 public class Colleges { String collegeId; Colleges(String collegeId){ this.collegeId = 'IIT ' + collegeId; } public static void main(String[] args) { // TODO Auto-generated method stub Colleges clg = new Colleges(); //this can't create colleges constructor now. } } 

Uso de this () en la sobrecarga del constructor

Sin embargo, podemos usar esta palabra clave dentro del constructor, que puede usarse para invocar al otro constructor de la misma clase.

Considere el siguiente ejemplo para comprender el uso de esta palabra clave en la sobrecarga del constructor.

 public class Student { //instance variables of the class int id,passoutYear; String name,contactNo,collegeName; Student(String contactNo, String collegeName, int passoutYear){ this.contactNo = contactNo; this.collegeName = collegeName; this.passoutYear = passoutYear; } Student(int id, String name){ this('9899234455', 'IIT Kanpur', 2018); this.id = id; this.name = name; } public static void main(String[] args) { //object creation Student s = new Student(101, 'John'); System.out.println('Printing Student Information: 
'); System.out.println('Name: '+s.name+'
Id: '+s.id+'
Contact No.: '+s.contactNo+'
College Name: '+s.contactNo+'
Passing Year: '+s.passoutYear); } } 

Producción:

 Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018