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 створює виняток, повідомляючи, що конструктор не визначено.

розмір python

Розглянемо наступний приклад, який містить помилку, оскільки об’єкт 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. } } 

Використання this () у перевантаженні конструктора

Однак ми можемо використовувати це ключове слово всередині конструктора, яке можна використовувати для виклику іншого конструктора того ж класу.

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

 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