logo

Preopterećenje konstruktora u Javi

U Javi možemo preopteretiti konstruktore poput metoda. Preopterećenje konstruktora može se definirati kao koncept postojanja više od jednog konstruktora s različitim parametrima tako da svaki konstruktor može izvršiti drugačiji zadatak.

Razmotrite sljedeće Java program, u kojem smo u nastavi koristili različite konstruktore.

r u c jeziku

Primjer

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

Izlaz:

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

U gornjem primjeru, klasa Student konstruktor je preopterećen s dva različita konstruktora, tj. zadanim i parametriziranim.

Ovdje moramo razumjeti svrhu preopterećenja konstruktora. Ponekad moramo koristiti više konstruktora za inicijalizaciju različitih vrijednosti klase.

Također moramo primijetiti da java kompilator poziva zadani konstruktor kada ne koristimo nijedan konstruktor u klasi. Međutim, zadani konstruktor se ne poziva ako smo koristili bilo koji konstruktor u klasi, bio on zadani ili parametriran. U ovom slučaju, Java prevodilac izbacuje iznimku govoreći da je konstruktor nedefiniran.

veličine žličice

Razmotrite sljedeći primjer koji sadrži pogrešku budući da se objekt Colleges sada ne može stvoriti pomoću zadanog konstruktora budući da ga ne sadrži.

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

Upotreba ovog () u preopterećenju konstruktora

Međutim, možemo koristiti ovu ključnu riječ unutar konstruktora, koja se može koristiti za pozivanje drugog konstruktora iste klase.

Razmotrite sljedeći primjer kako biste razumjeli upotrebu ove ključne riječi u preopterećenju konstruktora.

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

Izlaz:

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