- 1 1. परिचय
- 2 3. this के मुख्य उपयोग केस
- 3 4. this का उपयोग करते समय महत्वपूर्ण नोट्स
- 4 5. व्यावहारिक कोड उदाहरण
- 4.1 5.1 सदस्य और स्थानीय चरों को अलग करना
- 4.2 5.2 कंस्ट्रक्टर श्रृंखला
- 4.3 5.3 विधि श्रृंखला
- 4.4 5.4 वर्तमान इंस्टेंस को पास करना
- 4.5 6. अक्सर पूछे जाने वाले प्रश्न (FAQ)
- 4.6 Q1. क्या मुझे हमेशा “this” लिखना पड़ता है?
- 4.7 Q2. यदि मैं स्थिर विधि के अंदर this का उपयोग करूं तो क्या होता है?
- 4.8 Q3. this और super के बीच क्या अंतर है?
- 4.9 Q4. विधि श्रृंखला में this लौटाने का क्या लाभ है?
- 4.10 प्रश्न 5. यदि आवश्यक होने पर मैं इसे उपयोग करना भूल जाऊँ तो क्या होता है?
- 4.11 7. निष्कर्ष
1. परिचय
जब आप जावा में प्रोग्रामिंग सीखना शुरू करते हैं, तो आप विभिन्न कीवर्ड्स से मिलेंगे। इनमें से, “this” क्लासेज़ और ऑब्जेक्ट‑ओरिएंटेड अवधारणाओं को समझने में बहुत महत्वपूर्ण भूमिका निभाता है। लेकिन, क्योंकि अंग्रेज़ी में शब्द “this” का अर्थ केवल “यह/यहाँ” होता है, कई शुरुआती शुरू में यह नहीं समझ पाते कि प्रोग्रामिंग में इसका उपयोग क्यों किया जाता है।
यह लेख जावा में “this” कीवर्ड की भूमिका और उपयोग को स्पष्ट और शुरुआती‑मित्रतापूर्ण तरीके से समझाता है। आप सदस्य वेरिएबल्स और लोकल वेरिएबल्स के बीच अंतर तथा कंस्ट्रक्टर के अंदर “this” का उपयोग जैसे मुख्य बिंदु सीखेंगे, साथ ही व्यावहारिक कोड उदाहरण भी देखेंगे।
हम सामान्य प्रश्नों, गलतियों और महत्वपूर्ण नोट्स को भी कवर करेंगे। इस गाइड के अंत तक, आप समझ जाएंगे कि this कीवर्ड कैसे काम करता है और इसे बुनियादी से लेकर उन्नत परिदृश्यों तक आत्मविश्वास के साथ कैसे उपयोग किया जाए।
2. “this” कीवर्ड क्या है?
जावा में, “this” वर्तमान ऑब्जेक्ट स्वयं को दर्शाता है। जब किसी क्लास से एक इंस्टेंस (ऑब्जेक्ट) बनाया जाता है, तो इस कीवर्ड “this” का उपयोग उस विशिष्ट ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है।
भले ही एक ही क्लास से कई ऑब्जेक्ट बनाए जाएँ, प्रत्येक ऑब्जेक्ट का this अलग‑अलग इंस्टेंस को दर्शाता है। यह आपके कोड के भीतर “वर्तमान में कौन‑सा ऑब्जेक्ट ऑपरेट हो रहा है” को स्पष्ट करने में मदद करता है।
this की बुनियादी भूमिकाएँ
- इंस्टेंस वेरिएबल्स और मेथड्स तक पहुँच
this.variableNameयाthis.methodName()का उपयोग करके आप विशिष्ट ऑब्जेक्ट के वेरिएबल्स और मेथड्स तक पहुँच सकते हैं। - लोकल वेरिएबल्स और इंस्टेंस वेरिएबल्स के बीच अंतर
जब कंस्ट्रक्टर पैरामीटर या मेथड पैरामीटर का नाम सदस्य वेरिएबल के समान होता है, तो “this” का उपयोग करके उन्हें अलग किया जाता है।
हमें “this” की आवश्यकता क्यों है?
जावा में आप एक ही क्लास से कई ऑब्जेक्ट बना सकते हैं, जिनकी स्थिति (state) और व्यवहार (behavior) स्वतंत्र होते हैं। इन ऑब्जेक्ट्स के भीतर, आपको “इस ऑब्जेक्ट स्वयं” को संदर्भित करने का एक तरीका चाहिए।
यही काम “this” कीवर्ड करता है।
उदाहरण के लिए, Person क्लास के अंदर, “this” का उपयोग करके आप “इस विशेष Person ऑब्जेक्ट” को व्यक्त कर सकते हैं।
सारांश
“this” ऑब्जेक्ट‑ओरिएंटेड प्रोग्रामिंग में एक बहुत ही महत्वपूर्ण अवधारणा है। यह एक पुल की तरह कार्य करता है, जिससे ऑब्जेक्ट अपने स्वयं के डेटा और व्यवहार तक पहुँच सकता है।
3. this के मुख्य उपयोग केस
“this” कीवर्ड जावा में कई जगहों पर दिखाई देता है। नीचे प्रतिनिधि उदाहरणों के साथ कोड सैंपल दिए गए हैं।
3.1 सदस्य वेरिएबल्स और लोकल वेरिएबल्स के बीच अंतर
जावा अक्सर कंस्ट्रक्टर पैरामीटर और सदस्य वेरिएबल के लिए एक ही नाम उपयोग करता है। ऐसे मामलों में, “this” उनका अंतर बताता है।
उदाहरण: सदस्य वेरिएबल्स और लोकल वेरिएबल्स के बीच अंतर
public class Student {
private String name;
public Student(String name) {
this.name = name; // Left: member variable, Right: constructor parameter
}
}
यदि आप this को छोड़ देते हैं, तो लोकल वेरिएबल को प्राथमिकता मिलती है, और सदस्य वेरिएबल सही ढंग से असाइन नहीं होगा।
3.2 कंस्ट्रक्टर्स में this का उपयोग
जावा कंस्ट्रक्टर ओवरलोडिंग के माध्यम से कई कंस्ट्रक्टर्स की अनुमति देता है। आप this() का उपयोग करके किसी अन्य कंस्ट्रक्टर को कॉल कर सकते हैं, जिससे दोहराव कम हो जाता है।
उदाहरण: this() के साथ दूसरे कंस्ट्रक्टर को कॉल करना
public class Book {
private String title;
private int price;
public Book(String title) {
this(title, 0); // calls another constructor
}
public Book(String title, int price) {
this.title = title;
this.price = price;
}
}
यह इनिशियलाइज़ेशन लॉजिक को केंद्रीकृत करने और डुप्लिकेट कोड को रोकने में मदद करता है।
3.3 मेथड चेनिंग
this को रिटर्न करने से एक ही इंस्टेंस पर लगातार मेथड्स को कॉल करना संभव हो जाता है।
उदाहरण: मेथड चेनिंग
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
}
// Method chaining
Person p = new Person().setName("佐藤").setAge(25);
यह बिल्डर पैटर्न और कॉन्फ़िगरेशन क्लासेज़ में व्यापक रूप से उपयोग किया जाता है।
3.4 वर्तमान इंस्टेंस को पास करना
जब आपको वर्तमान इंस्टेंस को किसी अन्य विधि या कक्षा में पास करने की आवश्यकता हो, तो आप “this” का उपयोग कर सकते हैं। उदाहरण: वर्तमान ऑब्जेक्ट को पास करना
public class Printer {
public void print(Person person) {
System.out.println(person);
}
}
public class Person {
public void show(Printer printer) {
printer.print(this); // passes this instance
}
}
4. this का उपयोग करते समय महत्वपूर्ण नोट्स
हालांकि बहुत उपयोगी है, “this” को त्रुटियों से बचने के लिए सावधानीपूर्वक उपयोग करना चाहिए।
4.1 स्थिर संदर्भों में this का उपयोग नहीं किया जा सकता
एक static विधि या चर कक्षा का अपना होता है—इंस्टेंस का नहीं—इसलिए “this” का उपयोग नहीं किया जा सकता। अमान्य उदाहरण
public class Example {
private int value;
public static void printValue() {
// System.out.println(this.value); // Compile error
}
}
4.2 this का अत्यधिक उपयोग पठनीयता को कम कर सकता है
“this” का अनावश्यक उपयोग कोड को पढ़ना कठिन बना सकता है। केवल आवश्यकता होने पर ही इसका उपयोग करें। अनावश्यक उपयोग का उदाहरण
public class Test {
private int x;
public void setX(int x) {
this.x = x; // needed
// this.x = this.x + 1; // excessive use
}
}
4.3 this को super से भ्रमित न करें
- this → वर्तमान इंस्टेंस
- super → मूल (सुपरक्लास)
उदाहरण: this बनाम super का उपयोग
public class Parent {
public void greet() {
System.out.println("Parent method");
}
}
public class Child extends Parent {
public void greet() {
System.out.println("Child method");
super.greet();
}
}
5. व्यावहारिक कोड उदाहरण
5.1 सदस्य और स्थानीय चरों को अलग करना
public class Account {
private String owner;
public Account(String owner) {
this.owner = owner;
}
public void printOwner() {
System.out.println("Account Owner: " + this.owner);
}
}

5.2 कंस्ट्रक्टर श्रृंखला
public class Rectangle {
private int width;
private int height;
public Rectangle(int width) {
this(width, 1);
}
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public void printSize() {
System.out.println("Size: " + width + " x " + height);
}
}
5.3 विधि श्रृंखला
public class BuilderExample {
private String name;
private int age;
public BuilderExample setName(String name) {
this.name = name;
return this;
}
public BuilderExample setAge(int age) {
this.age = age;
return this;
}
public void printInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
BuilderExample person = new BuilderExample().setName("山田").setAge(30);
person.printInfo();
5.4 वर्तमान इंस्टेंस को पास करना
public class Notifier {
public void notifyUser(User user) {
System.out.println(user.getName() + " has been notified.");
}
}
public class User {
private String name;
public User(String name) { this.name = name; }
public String getName() { return this.name; }
public void sendNotification(Notifier notifier) {
notifier.notifyUser(this);
}
}
Notifier notifier = new Notifier();
User user = new User("佐藤");
user.sendNotification(notifier);
6. अक्सर पूछे जाने वाले प्रश्न (FAQ)
Q1. क्या मुझे हमेशा “this” लिखना पड़ता है?
A. हमेशा नहीं। इसका उपयोग करें जब:
- स्थानीय और सदस्य चर के नाम ओवरलैप करें
- आप स्पष्ट रूप से वर्तमान इंस्टेंस का संदर्भ देना चाहें
Q2. यदि मैं स्थिर विधि के अंदर this का उपयोग करूं तो क्या होता है?
A. आपको कंपाइल त्रुटि मिलेगी। स्थिर विधियां कक्षा की होती हैं, इंस्टेंस की नहीं।
Q3. this और super के बीच क्या अंतर है?
- this : वर्तमान इंस्टेंस
- super : मूल कक्षा
Q4. विधि श्रृंखला में this लौटाने का क्या लाभ है?
It allows consecutive calls on the same instance, improving readability.
प्रश्न 5. यदि आवश्यक होने पर मैं इसे उपयोग करना भूल जाऊँ तो क्या होता है?
स्थानीय वेरिएबल्स सदस्य वेरिएबल्स को ओवरराइड कर सकते हैं, जिससे गलत असाइनमेंट और बग्स उत्पन्न हो सकते हैं।
7. निष्कर्ष
इस लेख ने Java “this” कीवर्ड को मूलभूत से लेकर व्यावहारिक उपयोग तक समझाया। आपने सीखा:
- सदस्य वेरिएबल्स और स्थानीय वेरिएबल्स को कैसे अलग करें
- कंस्ट्रक्टर लॉजिक को कैसे केंद्रीकृत करें
- मेथड चेन कैसे बनाएं
- वर्तमान इंस्टेंस को अन्य मेथड्स में कैसे पास करें
हमने कुछ महत्वपूर्ण नोट्स भी कवर किए, जैसे:
- “this” को स्थैतिक (static) संदर्भों में उपयोग नहीं किया जा सकता
- “this” का अत्यधिक उपयोग न करें
- “super” के साथ इसे सही तरीके से उपयोग करें
समझना कि “this” कैसे काम करता है, आपके Java क्लास डिज़ाइन को स्पष्ट बनाएगा और बग्स को कम करेगा। Java की मूलभूत बातों का अन्वेषण जारी रखें और इन अवधारणाओं को वास्तविक कोड में लागू करें।
