सुपरक्लास में final के रूप में घोषित कोई भी मेथड सबक्लास द्वारा ओवरराइड नहीं किया जा सकता। यदि हम सुपरक्लास के फाइनल मेथड को ओवरराइड करने का प्रयास करते हैं तो हमें Java में एरर मिलेगा।
मेथड ओवरराइडिंग लागू करने के नियम
- मेथड घोषणा उस मेथड के समान होनी चाहिए जिसे ओवरराइड किया जाना है।
- क्लास (सबक्लास) को दूसरी क्लास (सुपरक्लास) को एक्सटेंड करना चाहिए, ओवरराइड करने का प्रयास करने से पहले।
- सबक्लास सुपरक्लास के फाइनल मेथड्स को कभी ओवरराइड नहीं कर सकता।
उदाहरण
class Car {
public void brake() {
System.out.println("brake() method of Car");
}
public final void accelerate() {
System.out.println("accelerate() method of Car");
}
}
public class BenzCar extends Car {
public static void main(String[] args) {
BenzCar benz = new BenzCar();
benz.accelerate();
benz.brake();
}
public void accelerate() {
System.out.println("accelerate() method of Benz Car");
}
}
ऊपर के उदाहरण में, यदि हम सुपरक्लास के फाइनल मेथड (accelerate() मेथड) को ओवरराइड करने का प्रयास करते हैं। कंपाइलर एरर थ्रो करेगा। इसलिए हम Java में सुपरक्लास के फाइनल मेथड को ओवरराइड नहीं करते।
आउटपुट
overridden method is final
कंपाइल-टाइम एरर: "overridden method is final" - फाइनल मेथड को ओवरराइड नहीं किया जा सकता।