नहीं, Java में मेथड ओवरराइडिंग के लिए समान मेथड सिग्नेचर आवश्यक है: समान नाम, समान पैरामीटर सूची, और समान रिटर्न टाइप (या कोवेरिएंट रिटर्न टाइप)। सिग्नेचर बदलने से ओवरराइडिंग के बजाय ओवरलोडिंग होती है।
उदाहरण
class Super {
void sample(int a, int b) {
System.out.println("Method of the Super class");
}
}
public class MethodOverriding extends Super {
void sample(int a, float b) { // पैरामीटर प्रकार अलग -> ओवरलोडिंग
System.out.println("Method of the Sub class");
}
public static void main(String args[]) {
MethodOverriding obj = new MethodOverriding();
obj.sample(20, 20); // int, int -> सुपरक्लास विधि कॉल होती है
}
}आउटपुट
Method of the Super class
व्याख्या
चूंकि पैरामीटर प्रकार भिन्न हैं (int, int बनाम int, float), सबक्लास विधि सुपरक्लास विधि को ओवरलोड करती है, ओवरराइड नहीं करती। जब obj.sample(20, 20) कॉल किया जाता है, तो सटीक मिलान सुपरक्लास विधि होती है।
ओवरराइडिंग नियम
- समान मेथड नाम
- समान पैरामीटर सूची (क्रम और प्रकार)
- समान या कोवेरिएंट रिटर्न टाइप
- एक्सेस मॉडिफायर अधिक प्रतिबंधात्मक नहीं हो सकता
- चेक्ड अपवाद नियमों का पालन करना चाहिए