Java में constructors और इनके प्रकार

Constructor code का एक ब्लॉक है जो नये बनाए गए object को इनिशियलाइज़ करता है| Java में constructor एक instance method जैसा दिखता है लेकिन यह कोई method नहीं है क्योकि इसमें return type नहीं होता|

संक्षिप्त में कहे तो constructor और method दोनों अलग अलग है, हालाकि लोग अक्सर constructor को java में विशेष प्रकार की method के रूप में संदर्भित करते है|

class के नाम पर ही constructor का नाम दिया जाता है और java कोड में इसे इस प्रकार लिखा जाता है –

public class MyClass{
//This is the constructor
MyClass(){

}
..
}

यहाँ ध्यान देने योग्य बात यह है कि यहाँ constructor का नाम class के नाम से मेल खाता है और इसमें कोई return type भी नहीं होता|

Constructor कैसे काम करता है ?

Constructor के काम को समझने के लिए एक उदाहरण लेते है मान लीजिये की हमारे पास एक class है जिसका नाम myclass है, हम myclass का object इस तरह बनाते है –


MyClass obj = new MyClass()

यहाँ new कीवर्ड class myclass का ऑब्जेक्ट बनाता है और इस नये बनाए गए object को इनिशियलाइज़ करने के लिए constructor को invite करता है|

java में एक साधारण constructor program :

public class Hello
{
String name;
//Constructor
Hello()
{
this.name = “ComputerHindiNotes”;
}
public static void main(String[] args)
{
Hello obj = new Hello();
System.out.println(obj.name);
}}

परिणाम (Output):

ComputerHindiNotes


यहाँ हमने class Hello का object बनाया है और इस object को obj नाम दिया है| जैसा कि आप देख सकते है कि output ComputerHindiNotes है जिसे हमने constructor के इनिशियलाइज़ेशन के दोरान पास किया था| इससे पता चलता है कि जब हमने object बनाया था तो constructor को call किया था| इस उदाहरण में हमने this कीवर्ड का उपयोग किया है जो इस उदाहरण में वर्तमान object obj को संदर्भित करता है| this keyword के बारे में हम आने वाले tutorial में जानेगे|

Constructor के प्रकार (Types of Constructor)

Constructor 3 प्रकार के होते है

  1. Default constructor
  2. No-argument constructor
  3. Parameterized constructor.

Default constructor

यदि आप class में किसी भी constructor को implement नहीं करते तब वहाँ java compiler आपके कोड में default constructor को सम्मिलित कर देता है| आप इसे अपने source code ( java file ) में नहीं पायेगे क्योकि यह compilation के समय insert किया जायगा default constructor .class file में पाया जाता है|

इस प्रक्रिया को नीचे दिए गए चित्र में दिखाया गया है :-

यदि आप अपने program में किसी constructor का उपयोग करते है तो java compiler द्वारा default constructor को program में इन्सर्ट नहीं किया जाता|

No-Argument constructor

बिना किसी आर्गुमेंट के constructor को no-argument constructor के रूप में जाना जाता है| signature सामान्यतः default constructor जैसे होते है हालाकि body में default constructor के विपरीत कोई भी कोड हो सकता है|

हालाकि आप कुछ लोगो को यह दावा करते हुए देख सकते है कि default constructor और no-argument constructor एक ही होता है, लेकिन वास्तव में वे एक नहीं होते, यदि आप अपनी class demo में public demo () {} लिखते है तो इसे default constructor नहीं कहा जा सकता क्योकि आपने इसका कोड लिखा है|

class Demo
{
public Demo()
{
System.out.println(“This is a no argument constructor”);
}
public static void main(String args[]) {
new Demo();
}
}

This is a no argument constructor.

Parameterized constructor

Parameterized constructor constructor का एक प्रकार है, जिसके कुछ argument (इन्हें parameter भी कहा जा सकता है) होते है|

उदाहरण :-
public class Employee {

int empId;
String empName;

//parameterized constructor with two parameters
Employee(int id, String name){
this.empId = id;
this.empName = name;
}
void info(){
System.out.println(“Id: “+empId+” Name: “+empName);
}

public static void main(String args[]){
Employee obj1 = new Employee(10245,”Chaitanya”);
Employee obj2 = new Employee(92232,”Negan”);
obj1.info();
obj2.info();
}
}
Output:
Id: 10245 Name: Chaitanya
Id: 92232 Name: Negan

हमारे उदाहरण में हमारे पास parameterized constructor है जो कि दो parameter id के साथ है, यहाँ object obj1 और obj2 को बनाते समय दो argument को पास किया गया है ताकि object obj1 और obj2 के निर्माण के बाद यह constructor invoke हो|
उदाहरण 2 : parameterized constructor
class Example2
{
private int var;
//default constructor
public Example2()
{
this.var = 10;
}
//parameterized constructor
public Example2(int num)
{
this.var = num;
}
public int getValue()
{
return var;
}
public static void main(String args[])
{
Example2 obj = new Example2();
Example2 obj2 = new Example2(100);
System.out.println(“var is: “+obj.getValue());
System.out.println(“var is: “+obj2.getValue());
}
}
Output:
var is: 10
var is: 100

इस उदाहरण में हमारे पास दो constructor है, एक default constructor और एक parameter constructor| जब हम new कीवर्ड का उपयोग करके object बनाते समय कोई parameter पास नहीं करते है तो default constructor को call किया जाता है हालाकि जब किसी parameter को pass किया जाता है तो वह parameterized constructor call होता है जो कि दिए गए parameters की सूची से मेल खाता है|
क्या होगा यदि class में केवल parameterized constructor को implement किया जाये ?
class Example3
{
private int var;
public Example3(int num)
{
var=num;
}
public int getValue()
{
return var;
}
public static void main(String args[])
{
Example3 myobj = new Example3();
System.out.println(“value of var is: “+myobj.getValue());
}
}

परिणाम ( output ) :- उपर्युक्त उदाहरण में compilation error आएगी, इसका कारण यह है कि class Example3 में statement Example3 myobj= new Example3() default constructor को invoke कर रहा है, जिसे हमने program में नहीं लिखा है| जब आप अपनी class में किसी constructor को implement नहीं करते तो compiler आपके कोड में default constructor को सम्मिलित करता है हालाकि जब आप किसी भी constructor को implement करते है तो आपको compiler द्वारा default constructor प्राप्त नहीं होता|
यदि ऊपर दिए गए code से parameterized constructor को हटाते है तब भी program run होगा क्योकि तब compiler द्वारा आपके code में default constructor को सम्मिलित किया जायेगा|


error: Content is protected !!