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

Java में एक्सेप्शन थ्रो करने वाले मेथड को ओवरराइड करते समय किन नियमों का पालन करना आवश्यक है?

हमें एक्सेप्शन थ्रो करने वाले मेथड को ओवरराइड करते समय कुछ नियमों का पालन करना आवश्यक है।

  • जब पैरेंट क्लास मेथड कोई एक्सेप्शन नहीं थ्रो करता, तो चाइल्ड क्लास मेथड कोई चेक्ड एक्सेप्शन नहीं थ्रो कर सकता, लेकिन यह कोई भी अनचेक्ड एक्सेप्शन थ्रो कर सकता है।
class Parent { 
    void doSomething() { 
        // ... 
    } 
} 
class Child extends Parent { 
    void doSomething() throws IllegalArgumentException { 
        // ... 
    } 
}
  • जब पैरेंट क्लास मेथड एक या अधिक चेक्ड एक्सेप्शन थ्रो करता है, तो चाइल्ड क्लास मेथड वही एक्सेप्शन या उसके सबक्लास थ्रो कर सकता है, या कोई एक्सेप्शन नहीं थ्रो कर सकता, लेकिन नए/व्यापक चेक्ड एक्सेप्शन नहीं थ्रो कर सकता।
class Parent { 
    void doSomething() throws IOException, ParseException { 
        // ... 
    } 
    void doSomethingElse() throws IOException { 
        // ... 
    } 
} 
class Child extends Parent { 
    void doSomething() throws IOException { 
        // ... 
    } 
    void doSomethingElse() throws FileNotFoundException, EOFException { 
        // ... (FileNotFoundException, EOFException, IOException के सबक्लास हैं) 
    } 
}
  • जब पैरेंट क्लास मेथड के थ्रो क्लॉज में अनचेक्ड एक्सेप्शन होता है, तो चाइल्ड क्लास मेथड कोई भी या किसी भी संख्या में अनचेक्ड एक्सेप्शन थ्रो कर सकता है, भले ही वे संबंधित न हों।
class Parent { 
    void doSomething() throws IllegalArgumentException { 
        // ... 
    } 
} 
class Child extends Parent { 
    void doSomething() throws ArithmeticException, BufferOverflowException { 
        // ... 
    } 
}

उदाहरण

import java.io.*; 
class SuperClassTest{ 
    public void test() throws IOException { 
        System.out.println("SuperClassTest.test() method"); 
    } 
} 
class SubClassTest extends SuperClassTest { 
    public void test() { 
        System.out.println("SubClassTest.test() method"); 
    } 
} 
public class OverridingExceptionTest { 
    public static void main(String[] args) { 
        SuperClassTest sct = new SubClassTest(); 
        try { 
            sct.test(); 
        } catch(IOException ioe) { 
            ioe.printStackTrace(); 
        } 
    } 
}

आउटपुट

SubClassTest.test() method

सबक्लास मेथड पैरेंट के चेक्ड एक्सेप्शन (IOException) को थ्रो नहीं करता, जो अनुमत है। पैरेंट रेफरेंस से कॉल करने पर भी कोई एक्सेप्शन नहीं थ्रो होता।

  1. Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं? Java में paint() विधि और repaint() विधि के बीच क्या अंतर हैं?

    Paint() और Repaint() paint(): इस विधि में इस घटक को पेंट करने के निर्देश होते हैं। Java Swing में, हम paint() विधि के बजाय paintComponent() विधि को बदल सकते हैं क्योंकि paint paintBorder(), paintComponent() और paintChildren() विधियों को कॉल करता है। हम इस विधि को सीधे नहीं बुला सकते, इसके बजाय हम

  1. - Java में Exception क्लास और Error क्लास में क्या अंतर है?

    Exception क्लास और Error क्लास दोनों java.lang.Throwable क्लास के सबक्लास हैं। हम रनटाइम पर अपवादों को हैंडल कर सकते हैं लेकिन एरर्स को हैंडल नहीं कर सकते। Exceptions (अपवाद): ये रनटाइम पर होने वाली तार्किक त्रुटियों (logical errors) को दर्शाने वाले ऑब्जेक्ट्स हैं जो JVM को अस्पष्टता (ambiguity)

  1. - Java मेथड ओवरराइडिंग के नियम

    एक मेथड को ठीक से ओवरराइड करते समय हमें निम्नलिखित नियमों पर विचार करना चाहिए −आर्गुमेंट लिस्ट ओवरराइडन मेथड के समान होनी चाहिए।रिटर्न टाइप वही होना चाहिए या सुपरक्लास में घोषित मूल ओवरराइडन मेथड के रिटर्न टाइप का सबटाइप होना चाहिए।एक्सेस लेवल ओवरराइडन मेथड के एक्सेस लेवल से अधिक प्रतिबंधात्मक नहीं