एक मेथड को ठीक से ओवरराइड करते समय हमें निम्नलिखित नियमों पर विचार करना चाहिए −
- आर्गुमेंट लिस्ट ओवरराइडन मेथड के समान होनी चाहिए।
- रिटर्न टाइप वही होना चाहिए या सुपरक्लास में घोषित मूल ओवरराइडन मेथड के रिटर्न टाइप का सबटाइप होना चाहिए।
- एक्सेस लेवल ओवरराइडन मेथड के एक्सेस लेवल से अधिक प्रतिबंधात्मक नहीं हो सकता। उदाहरण के लिए: यदि सुपरक्लास मेथड public घोषित है तो सबक्लास में ओवरराइडिंग मेथड private या protected नहीं हो सकता।
- इंस्टेंस मेथड्स को केवल तभी ओवरराइड किया जा सकता है यदि वे सबक्लास द्वारा इनहेरिट किए गए हों।
- final घोषित मेथड को ओवरराइड नहीं किया जा सकता।
- static घोषित मेथड को ओवरराइड नहीं किया जा सकता लेकिन पुनः घोषित किया जा सकता है।
- यदि एक मेथड को इनहेरिट नहीं किया जा सकता, तो इसे ओवरराइड नहीं किया जा सकता।
- समान पैकेज में इंस्टेंस के सुपरक्लास के रूप में एक सबक्लास किसी भी सुपरक्लास मेथड को ओवरराइड कर सकता है जिसे private या final घोषित नहीं किया गया है।
- एक अलग पैकेज में एक सबक्लास केवल non-final मेथड्स को ओवरराइड कर सकता है जिन्हें public या protected घोषित किया गया है।
- एक ओवरराइडिंग मेथड किसी भी अनचेक्ड एक्सेप्शन को फेंक सकता है, चाहे ओवरराइडन मेथड एक्सेप्शन फेंकता हो या नहीं। हालांकि, ओवरराइडिंग मेथड को नए या व्यापक चेक्ड एक्सेप्शन नहीं फेंकने चाहिए जो ओवरराइडन मेथड द्वारा घोषित किए गए हैं। ओवरराइडिंग मेथड ओवरराइडन मेथड की तुलना में संकीर्ण या कम एक्सेप्शन फेंक सकता है।
- कंस्ट्रक्टर्स को ओवरराइड नहीं किया जा सकता।