logo

Претоварване на конструктор в Java

В Java можем да претоварваме конструктори като методи. Претоварването на конструктора може да се дефинира като концепцията за наличие на повече от един конструктор с различни параметри, така че всеки конструктор да може да изпълнява различна задача.

Помислете за следното Java програма, в която сме използвали различни конструктори в класа.

Пример

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

Изход:

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

В горния пример класът Student конструктор е претоварен с два различни конструктора, т.е. по подразбиране и параметризиран.

Тук трябва да разберем целта на претоварването на конструктора. Понякога трябва да използваме множество конструктори, за да инициализираме различните стойности на класа.

Трябва също така да забележим, че Java компилаторът извиква конструктор по подразбиране, когато не използваме конструктор в класа. Конструкторът по подразбиране обаче не се извиква, ако сме използвали който и да е конструктор в класа, независимо дали е по подразбиране или параметризиран. В този случай компилаторът на Java хвърля изключение, казвайки, че конструкторът е недефиниран.

бикове срещу вол

Разгледайте следния пример, който съдържа грешката, тъй като обектът Colleges не може да бъде създаден с помощта на конструктора по подразбиране сега, тъй като не съдържа такъв.

 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. } } 

Използване на това () при претоварване на конструктора

Въпреки това можем да използваме тази ключова дума вътре в конструктора, която може да се използва за извикване на другия конструктор от същия клас.

Разгледайте следния пример, за да разберете използването на тази ключова дума при претоварване на конструктора.

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

Изход:

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