Function overriding and overloading are forms of Polymorphism in Object Oriented Programming. Method overloading occurs when two or more methods with the same method name but a different number of parameters in a single class. Method overriding means two methods with the same method name and the same number of parameters in two different classes means parent class and child class.
Function Overloading
As stated earlier, function overloading means declaring the same function name more than once with different parameters. For example, to find the area of vector, we need to pass radius as a parameter for circle whereas we need to pass length and breadth as parameters for rectangle. In that case, we need to pass one parameter for circle and two parameters for rectangle.
Lets check at the below example:
We have defined two functions area
with within a class Vector
. First one accepts single arguments and second one accepts two arguments. When we initialize the class and call the function name, we will get the error FATAL ERROR Cannot redeclare Vector::area() on line number 8
. Because we have redeclared the same function twice.
This can be overcome using __call
. We accept function name and arguments inside it. Then we write switch cases to handle according to the number of arguments.
This code will output:
Area of Circle: 314.15
Area of Rectangle: 100
Function Overriding
Function overriding means both the parent and child classes should have the same function name and the same number of arguments. Function overriding is used to replace the parent method in child class.
The function will output:
Function from Base Class with Base
Function from Derived Class : Derived