In this article we will learn about inheritance and polymorphism in Python programming language. Both inheritance and polymorphism are defined and examples are provided.
Inheritance
Creating a new class from existing class is known as inheritance. The class from which features are inherited is known as base class and the class into which features are derived into is called derived class.
Inheritance promotes reusability of code by reusing already existing classes. Inheritance is used to implement is-a relationship between classes.
Following hierarchy is an example representing inheritance between classes:
Syntax for creating a derived class is as follows:
class DerivedClass(BaseClass):
statement1
statement2
...
statementN
Following example demonstrates inheritance in Python:
class Shape:
def __init__(self): print("Shape Constructor")
def area(): print("Area of shape")
def peri(): print("Perimeter of shape")
class Circle(Shape):
def __init__(self, r):
Shape.__init__(self) #Calling parent constructor
self.radius = r
print("Circle Constructor")
def area(self): print("Area of circle is:", 3.142*self.radius*self.radius)
c = Circle(5)
c.area()
Polymorphism
Polymorphism means having different forms. Based on the context, a variable, function, or an object can have different meaning. As inheritance is related to classes, polymorphism is related to methods. In Python, method overriding is one way of implementing polymorphism.
Method Overriding
In method overriding, a base class and the derived class will have a method with the same signature. The derived class method can provide different functionality when compared to the base class method.
When a derived class method is created and the method is invoked, the derived class method executes overriding the base class method. Following example demonstrates method overriding:
class Shape:
def __init__(self): print("Shape Constructor")
def area(self): print("Area of shape")
def peri(self): print("Perimeter of shape")
class Circle(Shape):
def __init__(self, r):
Shape.__init__(self) #Calling parent constructor
self.radius = r
print("Circle Constructor")
def area(self):
print("Area of circle is:", 3.142*self.radius*self.radius)
c = Circle(5)
c.area() #Circle class area method overrides Shape class area method
Suryateja Pericherla, at present is a Research Scholar (full-time Ph.D.) in the Dept. of Computer Science & Systems Engineering at Andhra University, Visakhapatnam. Previously worked as an Associate Professor in the Dept. of CSE at Vishnu Institute of Technology, India.
He has 11+ years of teaching experience and is an individual researcher whose research interests are Cloud Computing, Internet of Things, Computer Security, Network Security and Blockchain.
He is a member of professional societies like IEEE, ACM, CSI and ISCA. He published several research papers which are indexed by SCIE, WoS, Scopus, Springer and others.
Leave a Reply