Java mēs varam pārslogot konstruktorus, piemēram, metodes. Konstruktora pārslodzi var definēt kā koncepciju, kurā ir vairāk nekā viens konstruktors ar dažādiem parametriem, lai katrs konstruktors varētu veikt dažādus uzdevumus.
Apsveriet tālāk minēto Java programma, kurā klasē esam izmantojuši dažādus konstruktorus.
java pārbaude ir nulle
Piemērs
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); } }
Izvade:
this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David
Iepriekš minētajā piemērā Studentu klase konstruktors ir pārslogots ar diviem dažādiem konstruktoriem, t.i., noklusējuma un parametrizētiem.
Šeit mums ir jāsaprot konstruktora pārslodzes mērķis. Dažreiz mums ir jāizmanto vairāki konstruktori, lai inicializētu dažādas klases vērtības.
Mums arī jāņem vērā, ka java kompilators izsauc noklusējuma konstruktoru, ja klasē neizmantojam nevienu konstruktoru. Tomēr noklusējuma konstruktors netiek izsaukts, ja klasē esam izmantojuši kādu konstruktoru neatkarīgi no tā, vai tas ir noklusējuma vai parametrizēts. Šajā gadījumā java kompilators izdara izņēmumu, sakot, ka konstruktors nav definēts.
lasiet csv failu java
Apsveriet šo piemēru, kurā ir kļūda, jo Koledžu objektu tagad nevar izveidot, izmantojot noklusējuma konstruktoru, jo tajā tāda nav.
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. } }
Šī () izmantošana konstruktora pārslodzē
Tomēr mēs varam izmantot šo atslēgvārdu konstruktorā, ko var izmantot, lai izsauktu otru tās pašas klases konstruktoru.
Apsveriet šo piemēru, lai izprastu šī atslēgvārda lietošanu konstruktora pārslodzē.
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); } }
Izvade:
Printing Student Information: Name: John Id: 101 Contact No.: 9899234455 College Name: 9899234455 Passing Year: 2018