logo

Konstruktor túlterhelés Java-ban

Java-ban túlterhelhetjük a konstruktorokat, például a metódusokat. A konstruktor túlterhelése úgy definiálható, mint egynél több konstruktor különböző paraméterekkel, így minden konstruktőr más-más feladatot tud végrehajtani.

Tekintsük a következő Jáva programot, amelyben az osztályban különböző konstruktorokat használtunk.

Példa

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

Kimenet:

prime program java-ban
 this a default constructor Default Constructor values: Student Id : 0 Student Name : null Parameterized Constructor values: Student Id : 10 Student Name : David 

A fenti példában a Diák osztály konstruktőr két különböző konstruktorral van túlterhelve, azaz alapértelmezett és paraméterezett.

pyspark sql

Itt meg kell értenünk a konstruktor túlterhelésének célját. Néha több konstruktort kell használnunk az osztály különböző értékeinek inicializálásához.

Azt is észre kell vennünk, hogy a java fordító egy alapértelmezett konstruktort hív meg, ha nem használunk egyetlen konstruktort sem az osztályban. Az alapértelmezett konstruktort azonban nem hívjuk meg, ha az osztályban bármilyen konstruktort használtunk, legyen az alapértelmezett vagy paraméterezett. Ebben az esetben a java fordító kivételt dob, amely szerint a konstruktor nem definiált.

Tekintsük a következő példát, amely a hibát tartalmazza, mivel a Colleges objektumot most nem lehet létrehozni az alapértelmezett konstruktorral, mivel az nem tartalmaz ilyet.

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

Ennek () használata konstruktor túlterhelésnél

Használhatjuk azonban ezt a kulcsszót a konstruktoron belül, amivel meghívhatjuk ugyanazon osztály másik konstruktorát.

Tekintse meg a következő példát, hogy megértse ennek a kulcsszónak a konstruktor túlterhelésében való használatát.

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

Kimenet:

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