logo

Rakentajan ylikuormitus Javassa

Javassa voimme ylikuormittaa rakentajia, kuten menetelmiä. Rakentajan ylikuormitus voidaan määritellä käsitteeksi, jossa on useampi kuin yksi konstruktori eri parametreilla, jotta jokainen rakentaja voi suorittaa eri tehtävän.

Harkitse seuraavaa Java ohjelma, jossa olemme käyttäneet luokassa erilaisia ​​konstruktoreita.

strsep

Esimerkki

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

Lähtö:

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

Yllä olevassa esimerkissä opiskelijaluokka rakentaja on ylikuormitettu kahdella eri konstruktorilla, eli oletusarvoisella ja parametroidulla.

Tässä meidän on ymmärrettävä rakentajan ylikuormituksen tarkoitus. Joskus meidän on käytettävä useita rakentajia luokan eri arvojen alustamiseen.

Meidän on myös huomattava, että java-kääntäjä kutsuu oletuskonstruktorin, kun emme käytä luokassa mitään rakentajaa. Oletuskonstruktoria ei kuitenkaan kutsuta, jos olemme käyttäneet luokassa mitä tahansa konstruktoria, olipa se oletus- tai parametroitu. Tässä tapauksessa java-kääntäjä heittää poikkeuksen sanoen, että rakentaja on määrittelemätön.

tietokoneen organisaatio ja arkkitehtuuri

Harkitse seuraavaa esimerkkiä, joka sisältää virheen, koska Colleges-objektia ei voida nyt luoda oletuskonstruktorilla, koska se ei sisällä sellaista.

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

Tämän () käyttö konstruktorin ylikuormituksessa

Voimme kuitenkin käyttää tätä avainsanaa konstruktorin sisällä, jolla voidaan kutsua toinen saman luokan konstruktori.

Harkitse seuraavaa esimerkkiä ymmärtääksesi tämän avainsanan käytön rakentajan ylikuormituksessa.

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

Lähtö:

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