logo

Преоптерећење конструктора у Јави

У Јави можемо преоптеретити конструкторе попут метода. Преоптерећење конструктора може се дефинисати као концепт поседовања више од једног конструктора са различитим параметрима тако да сваки конструктор може да изврши другачији задатак.

Узмите у обзир следеће Јава програм, у којем смо користили различите конструкторе у класи.

ц код апс

Пример

 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 

У горњем примеру, класа Студент конструктор је преоптерећен са два различита конструктора, тј. подразумеваним и параметризованим.

Овде треба да разумемо сврху преоптерећења конструктора. Понекад је потребно да користимо више конструктора да иницијализујемо различите вредности класе.

Такође морамо приметити да јава компајлер позива подразумевани конструктор када не користимо ниједан конструктор у класи. Међутим, подразумевани конструктор се не позива ако смо користили било који конструктор у класи, било да је подразумевани или параметризован. У овом случају, јава компајлер избацује изузетак говорећи да је конструктор недефинисан.

јава апстрактна класа

Размотрите следећи пример, који садржи грешку пошто објекат Цоллегес сада не може да се креира помоћу подразумеваног конструктора јер га не садржи.

 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