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

Java में इंटरफेस ऑब्जेक्ट द्वारा डिराइव्ड क्लास के मेंबर वेरिएबल को कैसे एक्सेस करें?

जब एक इंटरफेस रेफरेंस एक कार्यान्वयन ऑब्जेक्ट को रखता है, तो केवल इंटरफेस में घोषित सदस्य ही पहुंच योग्य होते हैं। डिराइव्ड क्लास-विशिष्ट सदस्यों तक पहुंचने के लिए, रेफरेंस को कास्ट करना होगा।

समस्या

interface Sample {
    void demoMethod1();
}

public class InterfaceExample implements Sample {
    public void display() { // इंटरफेस में नहीं
        System.out.println("Sub class method");
    }
    public void demoMethod1() {
        System.out.println("Demo method-1");
    }
    public static void main(String args[]) {
        Sample obj = new InterfaceExample();
        obj.demoMethod1(); // OK
        obj.display();     // संकलन त्रुटि: इंटरफेस में display() नहीं
    }
}

समाधान: कास्टिंग

public static void main(String args[]) {
    Sample obj = new InterfaceExample();
    obj.demoMethod1();
    ((InterfaceExample) obj).display(); // कास्ट करके एक्सेस
}

आउटपुट

This is demo method-1
This is a method of the sub class

सर्वोत्तम अभ्यास

  • कास्टिंग से पहले instanceof जांचें ताकि ClassCastException से बचा जा सके।
  • बेहतर डिजाइन: इंटरफेस में सामान्य संचालन परिभाषित करें; कार्यान्वयन-विशिष्ट सदस्यों से बचें।
  1. - Java में एनोनिमस इनर क्लास का उपयोग करके इंटरफेस कैसे इम्प्लीमेंट करें?

    एक एनोनिमस इनर क्लास एक ऐसी क्लास है जिसका कोई नाम नहीं होता, हम इसे सीधे इंस्टेंशिएशन लाइन पर परिभाषित करते हैं। उदाहरण निम्न प्रोग्राम में, हम TutorialsPoint इंटरफेस के toString() मेथड को एनोनिमस इनर क्लास का उपयोग करके इम्प्लीमेंट कर रहे हैं, और इसके रिटर्न मान को प्रिंट कर रहे हैं। interface

  1. - Java में इंटरफेस (Interface)

    एक इंटरफेस Java में एक रेफरेंस टाइप है। यह एक क्लास के समान है। यह एब्स्ट्रैक्ट मेथड्स का एक संग्रह है। एक क्लास इंटरफेस को इम्प्लीमेंट करती है, जिससे इंटरफेस के एब्स्ट्रैक्ट मेथड्स विरासत में मिलते हैं। एब्स्ट्रैक्ट मेथड्स के साथ, एक इंटरफेस में कॉन्स्टेंट्स, डिफ़ॉल्ट मेथड्स, स्टेटिक मेथड्स, और न

  1. - दूसरे पैकेज से Java पैकेज कैसे एक्सेस करें

    आप इसे एक उदाहरण का उपयोग करके समझ सकते हैं जहां एक Boss क्लास payroll पैकेज में परिभाषित है।package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } }यदि Employee क्लास payroll पैकेज में नहीं है? Boss क्लास को तब किसी अन्य पैकेज में क्लास को स