- Overloading happens at [compile-timewhile Overriding happens at [runtime The binding of overloaded method call to its definition has happens at compile-time however binding of overridden method call to its definition happens at runtime.
- Static methods can be overloaded which means a class can have more than one static method of same name. Static methods cannot be overridden, even if you declare a same static method in child class it has nothing to do with the same method of parent class.
- The most basic difference is that overloading is being done in the same class while for overriding base and child classes are required. Overriding is all about giving a specific implementation to the inherited method of parent class.
- [Static binding) is being used for overloaded methods and [dynamic bindingis being used for overridden/overriding methods.
- Performance: Overloading gives better performance compared to overriding. The reason is that the binding of overridden methods is being done at runtime.
- private and final methods can be overloaded but they cannot be overridden. It means a class can have more than one private/final methods of same name but a child class cannot override the private/final methods of their base class.
- Return type of method does not matter in case of method overloading, it can be same or different. However in case of method overriding the overriding method can have more specific return
All in all, both method overloading and method overriding are splendid examples of POLYMORPHISM in most of the OOPS languages.
Method Overloading : When a method in a particular code accepts more than 1 type/number of arguments in order to ensure efficiency (by performing multiple tasks without having to create another new method). If done with constructors, it’s called constructor overloading.
Method overriding : When a superclass has a method with a fixed set of arguments, and it’s subclass too has the same method with arguments, upon compilation, the content or code of the subclass will override that of the superclass by virtue of INHERITANCE.