विभिन्न अन्य कीवर्ड्स के साथ Java this और super को विशेष कीवर्ड के रूप में भी प्रदान करता है जो मुख्य रूप से एक क्लास के वर्तमान इंस्टेंस और उसके सुपर क्लास को क्रमशः दर्शाने के लिए उपयोग किए जाते हैं। इस समानता के साथ, इन दोनों कीवर्ड्स के बीच महत्वपूर्ण अंतर हैं जो नीचे सूचीबद्ध हैं:
| क्र. सं. | मुख्य बिंदु | this | super |
|---|---|---|---|
| 1 | प्रतिनिधित्व और संदर्भ | this कीवर्ड मुख्य रूप से एक क्लास के वर्तमान इंस्टेंस को दर्शाता है। | दूसरी ओर super कीवर्ड पैरेंट क्लास के वर्तमान इंस्टेंस को दर्शाता है। |
| 2 | क्लास कंस्ट्रक्टर के साथ इंटरैक्शन | this कीवर्ड का उपयोग उसी क्लास के डिफ़ॉल्ट कंस्ट्रक्टर को कॉल करने के लिए किया जाता है। | super कीवर्ड का उपयोग पैरेंट क्लास के डिफ़ॉल्ट कंस्ट्रक्टर को कॉल करने के लिए किया जाता है। |
| 3 | विधि पहुंच | this कीवर्ड का उपयोग वर्तमान क्लास की विधियों तक पहुंचने के लिए किया जाता है क्योंकि इसमें वर्तमान क्लास का संदर्भ होता है। | super कीवर्ड की मदद से पैरेंट क्लास की विधि तक पहुंच सकते हैं। |
| 4 | स्टेटिक संदर्भ | this कीवर्ड को स्टेटिक संदर्भ से संदर्भित किया जा सकता है यानी स्टेटिक इंस्टेंस से लागू किया जा सकता है। उदाहरण के लिए हम System.out.println(this.x) लिख सकते हैं जो बिना किसी संकलन या रनटाइम त्रुटि के x का मान प्रिंट करेगा। | दूसरी ओर super कीवर्ड को स्टेटिक संदर्भ से संदर्भित नहीं किया जा सकता यानी स्टेटिक इंस्टेंस से लागू नहीं किया जा सकता। उदाहरण के लिए हम System.out.println(super.x) नहीं लिख सकते, यह संकलन-समय त्रुटि देगा। |
this बनाम super का उदाहरण
Equals.jsp
class A {
public int x, y;
public A(int x, int y) {
this.x = x;
this.y = y;
}
}
class B extends A {
public int x, y;
public B() {
this(0, 0);
}
public B(int x, int y) {
super(x + 1, y + 1); // पैरेंट क्लास कंस्ट्रक्टर को कॉल करता है
this.x = x;
this.y = y;
}
public void print() {
System.out.println("Base class: {" + x + ", " + y + "}");
System.out.println("Super class: {" + super.x + ", " + super.y + "}");
}
}
class Point {
public static void main(String[] args) {
B obj = new B();
obj.print();
obj = new B(1, 2);
obj.print();
}
}
आउटपुट
Base class: {0, 0}
Super class: {1, 1}
Base class: {1, 2}
Super class: {2, 3}