Bird
Raised Fist0
Javaprogramming~5 mins

OOP principles overview in Java - Time & Space Complexity

Choose your learning style10 modes available

Start learning this pattern below

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
Time Complexity: OOP principles overview
O(n)
Understanding Time Complexity

We want to understand how the time it takes to run object-oriented programs grows as the program handles more data or objects.

How does using OOP principles affect the speed of our Java programs?

Scenario Under Consideration

Analyze the time complexity of this simple Java class using OOP principles.


public class Counter {
    private int count = 0;

    public void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}
    

This class uses encapsulation to manage a count value with simple methods to increase and get the count.

Identify Repeating Operations

Look at what repeats when using this class in a program.

  • Primary operation: Calling increment() method to increase count.
  • How many times: Depends on how many times the method is called in the program.
How Execution Grows With Input

Each call to increment() does a simple step, so the time grows directly with how many times we call it.

Input Size (n)Approx. Operations
1010 increments
100100 increments
10001000 increments

Pattern observation: The time grows in a straight line as we do more increments.

Final Time Complexity

Time Complexity: O(n)

This means the time to run grows directly with the number of times we call the method.

Common Mistake

[X] Wrong: "Using classes and objects always makes the program slower because of extra steps."

[OK] Correct: The extra steps are usually very small, and the main time depends on how many times methods run, not just on using OOP.

Interview Connect

Understanding how OOP principles affect program speed helps you write clear code that also runs efficiently, a skill valued in many programming tasks.

Self-Check

What if the increment() method included a loop that runs through a list each time? How would the time complexity change?

Practice

(1/5)
1. Which of the following is NOT one of the four main principles of Object-Oriented Programming (OOP)?
easy
A. Encapsulation
B. Inheritance
C. Polymorphism
D. Compilation

Solution

  1. Step 1: Recall the four main OOP principles

    The four main principles are Encapsulation, Inheritance, Polymorphism, and Abstraction.
  2. Step 2: Identify the option not in the list

    Compilation is a process of converting code to machine language, not an OOP principle.
  3. Final Answer:

    Compilation -> Option D
  4. Quick Check:

    OOP principles exclude Compilation [OK]
Hint: Remember the four OOP pillars: E, I, P, A [OK]
Common Mistakes:
  • Confusing compilation with abstraction
  • Mixing OOP principles with programming processes
2. Which Java keyword is used to inherit properties from a parent class?
easy
A. implements
B. inherits
C. extends
D. super

Solution

  1. Step 1: Identify the keyword for class inheritance in Java

    Java uses the keyword extends to inherit from a parent class.
  2. Step 2: Differentiate from other keywords

    implements is for interfaces, super accesses parent members, and inherits is not a Java keyword.
  3. Final Answer:

    extends -> Option C
  4. Quick Check:

    Inheritance keyword = extends [OK]
Hint: Use 'extends' to inherit classes in Java [OK]
Common Mistakes:
  • Using 'implements' for class inheritance
  • Confusing 'super' with inheritance keyword
3. What will be the output of the following Java code?
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();
  }
}
medium
A. Bark
B. Animal sound
C. Compilation error
D. Runtime error

Solution

  1. Step 1: Understand method overriding and polymorphism

    The object a is declared as Animal but refers to a Dog instance. The sound() method is overridden in Dog.
  2. Step 2: Determine which method runs at runtime

    Java uses dynamic method dispatch, so the Dog's sound() method runs, printing "Bark".
  3. Final Answer:

    Bark -> Option A
  4. Quick Check:

    Overridden method runs = Bark [OK]
Hint: Overridden methods run from actual object type [OK]
Common Mistakes:
  • Thinking declared type method runs
  • Expecting compilation or runtime errors
4. Identify the error in the following Java code snippet:
class Vehicle {
  private int speed;
  public int getSpeed() { return speed; }
}
class Car extends Vehicle {
  public void setSpeed(int speed) { this.speed = speed; }
}
medium
A. Cannot access private field 'speed' directly in subclass
B. Cannot override getSpeed() method
C. Missing constructor in Car class
D. No error, code is correct

Solution

  1. Step 1: Check access to private fields in subclass

    The field speed is private in Vehicle, so Car cannot access it directly.
  2. Step 2: Analyze the setSpeed method in Car

    Car's setSpeed tries to assign this.speed, which is not accessible, causing a compile error.
  3. Final Answer:

    Cannot access private field 'speed' directly in subclass -> Option A
  4. Quick Check:

    Private fields inaccessible in subclass [OK]
Hint: Private fields are not visible in subclasses [OK]
Common Mistakes:
  • Assuming private fields are inherited
  • Ignoring access modifiers
5. You want to design a Java class hierarchy where different shapes (Circle, Rectangle) can calculate their area. Which OOP principle best supports writing a method double getArea() in a base class or interface and having each shape provide its own implementation?
hard
A. Encapsulation
B. Polymorphism
C. Abstraction
D. Inheritance

Solution

  1. Step 1: Understand the scenario of method overriding

    Each shape class provides its own version of getArea(), meaning the method behaves differently depending on the object.
  2. Step 2: Identify the OOP principle for multiple forms of a method

    This is Polymorphism, where the same method name works differently in subclasses.
  3. Final Answer:

    Polymorphism -> Option B
  4. Quick Check:

    Different behaviors for same method = Polymorphism [OK]
Hint: Same method, different behaviors = Polymorphism [OK]
Common Mistakes:
  • Confusing abstraction with polymorphism
  • Thinking inheritance alone handles this