Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Method overriding behavior
📖 Scenario: Imagine you are creating a simple program to describe different types of vehicles. Each vehicle can make a sound, but different vehicles make different sounds.
🎯 Goal: You will build a program that shows how a child class can change the behavior of a method it inherits from a parent class. This is called method overriding.
📋 What You'll Learn
Create a parent class called Vehicle with a method make_sound that prints "Generic vehicle sound".
Create a child class called Car that inherits from Vehicle.
Override the make_sound method in Car to print "Vroom!" instead.
Create an object of Vehicle and an object of Car and call their make_sound methods.
💡 Why This Matters
🌍 Real World
Understanding method overriding helps when designing programs with different types of objects that share common features but behave differently.
💼 Career
Method overriding is a key concept in object-oriented programming used in software development to create flexible and reusable code.
Progress0 / 4 steps
1
Create the parent class Vehicle
Create a class called Vehicle with a method make_sound that prints exactly "Generic vehicle sound".
Python
Hint
Use class Vehicle: to start the class and define make_sound with def make_sound(self):.
2
Create the child class Car
Create a class called Car that inherits from Vehicle. Do not add any methods yet.
Python
Hint
Use class Car(Vehicle): to inherit from Vehicle and add pass inside to keep it empty for now.
3
Override the make_sound method in Car
In the Car class, override the make_sound method to print exactly "Vroom!".
Python
Hint
Define make_sound inside Car and print "Vroom!" to replace the parent method.
4
Create objects and call make_sound
Create an object called vehicle of class Vehicle and an object called car of class Car. Then call make_sound on both objects.
Python
Hint
Create objects with vehicle = Vehicle() and car = Car(). Then call make_sound() on each.
Practice
(1/5)
1. What does method overriding allow a child class to do in Python?
easy
A. Prevent the parent class method from being used anywhere
B. Create a new method with a different name
C. Change the behavior of a method inherited from the parent class
D. Automatically call the parent class method without code
Solution
Step 1: Understand method overriding concept
Method overriding means the child class provides its own version of a method that exists in the parent class.
Step 2: Identify what overriding changes
The child class method replaces the parent's method behavior when called on the child instance.
Final Answer:
Change the behavior of a method inherited from the parent class -> Option C
Assuming parent method is called automatically without super()
2. Which of the following is the correct way to override a method named greet in a child class?
easy
A. def greet(self, extra):\n print('Hello from child')
B. def greet(self):\n print('Hello from child')
C. def greet_child(self):\n print('Hello from child')
D. def greet():\n print('Hello from child')
Solution
Step 1: Match method name exactly
Overriding requires the child method to have the same name as the parent method, here 'greet'.
Step 2: Check method signature
The method must include 'self' as the first parameter to be a proper instance method.
Final Answer:
def greet(self):\n print('Hello from child') -> Option B
Quick Check:
Same name and self parameter = correct override [OK]
Hint: Override by matching method name and self parameter [OK]
Common Mistakes:
Changing method name instead of overriding
Omitting self parameter in method definition
Adding extra parameters that don't match parent method
3. What will be the output of this code?
class Parent:
def greet(self):
print('Hello from Parent')
class Child(Parent):
def greet(self):
print('Hello from Child')
obj = Child()
obj.greet()
medium
A. Hello from Parent
B. Error: greet method not found
C. Hello from Parent\nHello from Child
D. Hello from Child
Solution
Step 1: Identify method overriding
The Child class defines its own greet method, overriding Parent's greet.
Step 2: Determine which method is called
Calling obj.greet() on a Child instance calls the Child's greet method, printing 'Hello from Child'.
Final Answer:
Hello from Child -> Option D
Quick Check:
Child method overrides Parent method = 'Hello from Child' [OK]
Hint: Child method runs when overridden, not parent's [OK]
Common Mistakes:
Expecting both parent and child messages to print
Thinking parent method runs instead of child
Assuming error due to method name conflict
4. Find the error in this code that tries to override a method:
class Parent:
def show(self):
print('Parent show')
class Child(Parent):
def show():
print('Child show')
obj = Child()
obj.show()
medium
A. Missing self parameter in Child's show method
B. Parent class method show is private
C. Child class should not override show method
D. obj.show() should be called as Child.show(obj)
Solution
Step 1: Check method signature in Child class
The Child's show method is missing the 'self' parameter, so it is not a proper instance method.
Step 2: Understand impact of missing self
Calling obj.show() will cause a TypeError because Python expects the first argument (self) but none is defined.
Final Answer:
Missing self parameter in Child's show method -> Option A
Quick Check:
Instance methods must have self parameter [OK]
Hint: Instance methods always need self as first parameter [OK]
Common Mistakes:
Ignoring missing self parameter
Thinking method overriding is not allowed
Believing calling method differently fixes error
5. Given this code, what will be the output?
class Parent:
def greet(self):
print('Hello from Parent')
class Child(Parent):
def greet(self):
super().greet()
print('Hello from Child')
obj = Child()
obj.greet()
hard
A. Hello from Parent\nHello from Child
B. Hello from Child
C. Hello from Parent
D. Error: super() used incorrectly
Solution
Step 1: Understand super() call in Child's greet
The Child's greet method calls super().greet(), which runs the Parent's greet method first.
Step 2: Follow the print statements
First, 'Hello from Parent' is printed, then 'Hello from Child' is printed after.
Final Answer:
Hello from Parent\nHello from Child -> Option A
Quick Check:
super() calls parent method before child code [OK]
Hint: super() runs parent method before child code [OK]