Method overriding allows a subclass to provide a different implementation of a method that is already defined in its parent class. By overriding a method, the subclass can modify or extend the behavior of the inherited method.
Let's take an example of a Shape
class and a Rectangle
subclass to understand how method overriding works:
class Shape: def area(self): pass class Rectangle(Shape): def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height
In this code, we define a Shape
class with an area
method that is left undefined using the pass
statement. We also define a Rectangle
subclass that inherits from the Shape
class.
In the Rectangle
subclass, we override the area
method by providing a specific implementation that calculates the area of a rectangle based on its width and height.
To use the overridden method, we can create an object of the Rectangle
class and call the area
method:
rectangle = Rectangle(5, 3) print(rectangle.area()) # Output: 15
In this code, we create an object of the Rectangle
class with a width of 5
and a height of 3
. We then call the area
method on the rectangle
object, which invokes the overridden area
method in the Rectangle
class and calculates the area of the rectangle.
The output of the code will be:
15
In this example, the area
method is overridden in the Rectangle
subclass to provide a specific implementation that is different from the area
method in the parent class (Shape
).
Method overriding allows subclasses to customize the behavior of inherited methods to suit their specific needs. It provides a way to extend or modify the functionality of the parent class methods in the context of the subclass.