logo

Přetížení konstruktoru v Javě

V Javě můžeme přetěžovat konstruktory jako metody. Přetížení konstruktoru lze definovat jako koncept více než jednoho konstruktoru s různými parametry, takže každý konstruktor může provádět jiný úkol.

Zvažte následující Jáva program, ve kterém jsme ve třídě použili různé konstruktory.

Příklad

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

Výstup:

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

Ve výše uvedeném příkladu třída Student konstruktér je přetížen dvěma různými konstruktory, tj. výchozím a parametrizovaným.

Zde musíme pochopit účel přetížení konstruktoru. Někdy potřebujeme použít více konstruktorů k inicializaci různých hodnot třídy.

Musíme si také všimnout, že kompilátor java vyvolá výchozí konstruktor, když ve třídě nepoužíváme žádný konstruktor. Výchozí konstruktor se však nevyvolá, pokud jsme ve třídě použili jakýkoli konstruktor, ať už je výchozí nebo parametrizovaný. V tomto případě kompilátor java vyvolá výjimku, že konstruktor není definován.

Zvažte následující příklad, který obsahuje chybu, protože objekt Colleges nyní nelze vytvořit pomocí výchozího konstruktoru, protože žádný neobsahuje.

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

Použití tohoto () při přetěžování konstruktoru

Toto klíčové slovo však můžeme použít uvnitř konstruktoru, které lze použít k vyvolání druhého konstruktoru stejné třídy.

Zvažte následující příklad, abyste pochopili použití tohoto klíčového slova při přetížení konstruktoru.

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

Výstup:

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