logo

Java'da yapıcının aşırı yüklenmesi

Java'da yöntemler gibi yapıcılara aşırı yükleme yapabiliriz. Yapıcının aşırı yüklenmesi, her kurucunun farklı bir görevi yerine getirebilmesi için farklı parametrelere sahip birden fazla kurucunun bulunması kavramı olarak tanımlanabilir.

Aşağıdakileri göz önünde bulundur Java sınıfta farklı kurucular kullandığımız program.

Örnek

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

Çıktı:

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

Yukarıdaki örnekte, Öğrenci sınıfı yapıcı iki farklı kurucuyla aşırı yüklenmiştir, yani varsayılan ve parametrelendirilmiş.

Burada yapıcının aşırı yüklenmesinin amacını anlamamız gerekiyor. Bazen sınıfın farklı değerlerini başlatmak için birden fazla kurucu kullanmamız gerekir.

Ayrıca sınıfta herhangi bir kurucu kullanmadığımızda Java derleyicisinin varsayılan bir kurucuyu çağırdığını da fark etmeliyiz. Ancak, sınıfta herhangi bir kurucu kullanmışsak, ister varsayılan ister parametreli olsun, varsayılan kurucu çağrılmaz. Bu durumda Java derleyicisi, yapıcının tanımsız olduğunu söyleyen bir istisna atar.

program ve komut dosyası arasındaki fark

Colleges nesnesi artık bir tane içermediğinden varsayılan kurucu kullanılarak oluşturulamadığından hatayı içeren aşağıdaki örneği göz önünde bulundurun.

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

Yapıcının aşırı yüklenmesinde this () kullanımı

Ancak bu anahtar kelimeyi yapıcının içinde kullanabiliriz, bu aynı sınıftaki diğer kurucuyu çağırmak için kullanılabilir.

Bu anahtar kelimenin yapıcı aşırı yüklemesinde kullanımını anlamak için aşağıdaki örneği göz önünde bulundurun.

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

Çıktı:

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