logo

التحميل الزائد للمنشئ في جافا

في Java، يمكننا زيادة التحميل على المُنشئين مثل الأساليب. يمكن تعريف التحميل الزائد للمنشئ على أنه مفهوم وجود أكثر من مُنشئ بمعلمات مختلفة بحيث يمكن لكل مُنشئ أداء مهمة مختلفة.

النظر في ما يلي جافا البرنامج الذي استخدمنا فيه منشئين مختلفين في الفصل.

windows.open جافا سكريبت

مثال

 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 

في المثال أعلاه، فئة الطالب البناء مثقل بمنشئين مختلفين، أي الافتراضي والمعلمات.

هنا، نحن بحاجة إلى فهم الغرض من التحميل الزائد للمنشئ. في بعض الأحيان، نحتاج إلى استخدام مُنشئات متعددة لتهيئة القيم المختلفة للفئة.

يجب أن نلاحظ أيضًا أن مترجم Java يستدعي مُنشئًا افتراضيًا عندما لا نستخدم أي مُنشئ في الفصل. ومع ذلك، لا يتم استدعاء المُنشئ الافتراضي إذا استخدمنا أي مُنشئ في الفصل، سواء كان مُنشئًا افتراضيًا أو ذو معلمات. في هذه الحالة، يقوم مترجم Java بطرح استثناء يقول أن المنشئ غير محدد.

معلمة فيرلوج

خذ بعين الاعتبار المثال التالي، الذي يحتوي على الخطأ لأنه لا يمكن إنشاء كائن الكليات باستخدام المنشئ الافتراضي الآن لأنه لا يحتوي على واحد.

 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