Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java प्रोग्राम में super() और this() के बीच अंतर


विभिन्न अन्य कीवर्ड्स के साथ 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}

  1. - जावा में Thread और Runnable के बीच अंतर

    थ्रेड एक्जीक्यूशन का नया थ्रेड बनाने के दो तरीके हैं। एक है Thread क्लास का सबक्लास घोषित करना। इस सबक्लास को Thread क्लास के run मेथड को ओवरराइड करना चाहिए। सबक्लास का इंस्टेंस तब एलोकेट और स्टार्ट किया जा सकता है। थ्रेड बनाने का दूसरा तरीका है Runnable इंटरफेस को इम्प्लीमेंट करने वाली क्लास घोषित

  1. - जावा में Exception और Error के बीच अंतर

    Exceptions और Errors दोनों Throwable क्लास के सबक्लास हैं। Error एक ऐसी समस्या को इंगित करता है जो मुख्य रूप से सिस्टम रिसोर्सेज की कमी के कारण होती है और हमारे एप्लिकेशन को इस प्रकार की समस्याओं को नहीं पकड़ना चाहिए। Errors के कुछ उदाहरण हैं: सिस्टम क्रैश एरर और आउट ऑफ मेमोरी एरर। Errors ज्यादातर र

  1. - जावा में Serialization और Externalization के बीच अंतर

    Serialization और Externalization दोनों ऑब्जेक्ट को बाइट स्ट्रीम में बदलने और बाइट स्ट्रीम को डेटाबेस या मेमोरी में स्टोर करने की प्रक्रियाएं हैं। जो क्लास java.io.Serializable इंटरफेस को इम्प्लीमेंट करती है उसे सीरियलाइज किया जा सकता है। दूसरी ओर, Externalization एप्लिकेशन में आवश्यकता के आधार पर कस