A subclass can either completely override the implementation for an inherited method or the subclass can enhance the method by adding functionality to it. Replacing a Superclass's Method ImplementationSometimes, a subclass will want to replace entirely its superclass's implementation of a method. Indeed, many superclasses provide an empty method implementation with the expectation that most, if not all, subclasses will completely replace the superclass's implementation of the method. Adding to a Superclass's Method ImplementationOther times a subclass will want to keep its superclass's implementation of a method but enhance it further with behavior specific to the subclass. For example, constructor methods within a subclass typically do this--the subclass wants to preserve the initialization done by the superclass, but provide additional initialization specific to the subclass. Methods a Subclass Cannot Override
Methods a Subclass Must OverrideSubclass must override methods that are declared abstract in the superclass, or the subclass itself must be abstract. Writing Abstract Classes and Methods discusses abstract classes and methods in detail.
If subclass (child class) has the same method as declared in the parent class, it is known as method overriding in Java. In other words, If a subclass provides the specific implementation of the method that has been declared by one of its parent class, it is known as method overriding. Usage of Java Method Overriding
Rules for Java Method Overriding
Understanding the problem without method overridingLet's understand the problem that we may face in the program if we don't use method overriding. Test it NowOutput: Problem is that I have to provide a specific implementation of run() method in subclass that is why we use method overriding. Example of method overridingIn this example, we have defined the run method in the subclass as defined in the parent class but it has some specific implementation. The name and parameter of the method are the same, and there is IS-A relationship between the classes, so there is method overriding. Test it NowOutput: A real example of Java Method OverridingConsider a scenario where Bank is a class that provides functionality to get the rate of interest. However, the rate of interest varies according to banks. For example, SBI, ICICI and AXIS banks could provide 8%, 7%, and 9% rate of interest. Java method overriding is mostly used in Runtime Polymorphism which we will learn in next pages.Test it NowOutput: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 Can we override static method?No, a static method cannot be overridden. It can be proved by runtime polymorphism, so we will learn it later. Why can we not override static method?It is because the static method is bound with class whereas instance method is bound with an object. Static belongs to the class area, and an instance belongs to the heap area. Can we override java main method?No, because the main is a static method. Difference between method Overloading and Method Overriding in javaClick me for the difference between method overloading and overriding More topics on Method Overriding (Not For Beginners)Method Overriding with Access Modifier Let's see the concept of method overriding with access modifier. Exception Handling with Method Overriding Let's see the concept of method overriding with exception handling. Can subclass override the methods of superclass?A subclass within the same package as the instance's superclass can override any superclass method that is not declared private or final. A subclass in a different package can only override the non-final methods declared public or protected.
Can I override a method with different parameters?Both methods will still exist, so it's called overloading. In Java and in C Sharp it works pretty much the same; you just define a new method with different parameters. You cannot just change the return type, though. The parameters to the methods must be different in order to overload one.
Which methods must be override in the subclass?Subclass must override methods that are declared abstract in the superclass, or the subclass itself must be abstract. Writing Abstract Classes and Methods discusses abstract classes and methods in detail.
Can subclass override the static methods of superclass?No, we cannot override static methods because method overriding is based on dynamic binding at runtime and the static methods are bonded using static binding at compile time.
|