V Javi lahko preobremenimo konstruktorje, kot so metode. Preobremenitev konstruktorja lahko definiramo kot koncept več kot enega konstruktorja z različnimi parametri, tako da lahko vsak konstruktor izvaja drugačno nalogo.
Razmislite o naslednjem Java program, pri katerem smo pri pouku uporabili različne konstruktorje.
primer java do while
Primer
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); } }
Izhod:
this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David
V zgornjem primeru razred Študent konstruktor je preobremenjen z dvema različnima konstruktorjema, tj. privzetim in parametriranim.
Tukaj moramo razumeti namen preobremenitve konstruktorja. Včasih moramo za inicializacijo različnih vrednosti razreda uporabiti več konstruktorjev.
Opaziti moramo tudi, da prevajalnik java prikliče privzeti konstruktor, kadar v razredu ne uporabljamo nobenega konstruktorja. Vendar se privzeti konstruktor ne prikliče, če smo uporabili katerega koli konstruktorja v razredu, ne glede na to, ali je privzeti ali parametriran. V tem primeru prevajalnik java vrže izjemo, ki pravi, da je konstruktor nedefiniran.
pretvorba niza v int v javi
Razmislite o naslednjem primeru, ki vsebuje napako, ker predmeta Colleges zdaj ni mogoče ustvariti s privzetim konstruktorjem, ker ga ne vsebuje.
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. } }
Uporaba tega () pri preobremenitvi konstruktorja
Lahko pa uporabimo to ključno besedo znotraj konstruktorja, ki jo lahko uporabimo za priklic drugega konstruktorja istega razreda.
Razmislite o naslednjem primeru, če želite razumeti uporabo te ključne besede pri preobremenitvi konstruktorja.
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); } }
Izhod:
Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018