Why inheritance is used in Java - Performance Analysis
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how using inheritance affects the time it takes for a program to run.
Specifically, we ask: How does inheritance change the number of steps the program needs?
Analyze the time complexity of the following code snippet.
class Animal {
void sound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog();
a.sound();
}
}
This code shows a class Dog inheriting from Animal and overriding a method. It calls the method on a Dog object using an Animal reference.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Calling the overridden method sound()
- How many times: Once in this example, but could be many times if called repeatedly
Calling a method through inheritance does not add extra steps per call.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 method calls |
| 100 | 100 method calls |
| 1000 | 1000 method calls |
Pattern observation: The number of steps grows directly with how many times the method is called, inheritance itself does not slow it down.
Time Complexity: O(n)
This means the time grows linearly with the number of method calls, inheritance does not add extra cost per call.
[X] Wrong: "Inheritance makes method calls slower because it adds extra steps to find the method."
[OK] Correct: Modern Java uses efficient method lookup, so calling an overridden method through inheritance is just as fast as calling a normal method.
Understanding how inheritance affects performance helps you explain design choices clearly and shows you know how code structure impacts running time.
"What if we added many levels of inheritance? How would the time complexity of method calls change?"
Practice
Solution
Step 1: Understand inheritance purpose
Inheritance allows a new class to use code from an existing class, avoiding repetition.Step 2: Compare options
Only To reuse code from an existing class correctly states code reuse. Others are incorrect because inheritance does not create unrelated classes, speed up programs directly, or avoid methods.Final Answer:
To reuse code from an existing class -> Option CQuick Check:
Inheritance = Code reuse [OK]
- Thinking inheritance speeds up the program
- Believing inheritance creates unrelated classes
- Confusing inheritance with method removal
Animal in Java?Solution
Step 1: Recall Java inheritance syntax
Java uses the keywordextendsto inherit from a class.Step 2: Check each option
class Dog extends Animal {} usesextends, which is correct. Options A, C, and D use wrong keywords.Final Answer:
class Dog extends Animal {} -> Option BQuick Check:
Inheritance keyword = extends [OK]
- Using 'inherits' instead of 'extends'
- Confusing 'implements' with class inheritance
- Using 'uses' keyword which doesn't exist
class Animal {
void sound() { System.out.println("Animal sound"); }
}
class Dog extends Animal {
void sound() { System.out.println("Bark"); }
}
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.sound();
}
}Solution
Step 1: Understand method overriding and polymorphism
Dog overrides thesound()method of Animal. The object is of type Dog but referenced as Animal.Step 2: Determine which method runs
At runtime, the Dog'ssound()method runs due to polymorphism, printing "Bark".Final Answer:
Bark -> Option AQuick Check:
Overridden method runs = Bark [OK]
- Expecting base class method output
- Thinking it causes compile or runtime error
- Confusing reference type with object type
class Vehicle {
void start() { System.out.println("Vehicle started"); }
}
class Car Vehicle {
void start() { System.out.println("Car started"); }
}Solution
Step 1: Check class inheritance syntax
In Java, to inherit a class, useextendskeyword. The code missesextendsinclass Car Vehicle.Step 2: Verify other options
No semicolon needed after class declaration, methods can be overridden, and Vehicle need not be abstract.Final Answer:
Incorrect inheritance syntax in class Car -> Option DQuick Check:
Use 'extends' keyword for inheritance [OK]
- Forgetting 'extends' keyword
- Adding semicolon after class header
- Thinking methods can't be overridden
SmartPhone that has all features of Phone plus new features like camera and GPS. Which is the best way to do this using inheritance?Solution
Step 1: Identify real-world relationship
A SmartPhone is a type of Phone with extra features, so it should inherit Phone.Step 2: Apply inheritance correctly
SmartPhone should extend Phone and add new methods for camera and GPS.Final Answer:
Make SmartPhone extend Phone and add new methods -> Option AQuick Check:
Subclass adds features to superclass [OK]
- Reversing inheritance direction
- Not using inheritance for related classes
- Copy-pasting code instead of extending
