OOP Difference between a derived class and an inherited class?
Categories:
Derived vs. Inherited Classes: Understanding OOP Terminology

Explore the nuances between 'derived' and 'inherited' classes in Object-Oriented Programming (OOP) and clarify common misconceptions.
In Object-Oriented Programming (OOP), the concepts of inheritance are fundamental to building scalable and maintainable software. Terms like 'derived class' and 'inherited class' are often used interchangeably, leading to confusion. While closely related, understanding the precise meaning of each term can enhance your grasp of class hierarchies and relationships. This article will clarify these terms, illustrate their usage, and provide practical examples.
The Core Concept: Inheritance
Inheritance is a mechanism in OOP that allows a new class (the 'child' or 'subclass') to acquire properties and behaviors (methods and fields) from an existing class (the 'parent' or 'superclass'). This promotes code reusability and establishes a natural 'is-a' relationship between classes. For example, a 'Car' is a 'Vehicle', and a 'Dog' is an 'Animal'.
classDiagram Animal <|-- Dog Animal <|-- Cat Vehicle <|-- Car Vehicle <|-- Motorcycle class Animal { +sleep() +eat() } class Dog { +bark() } class Cat { +meow() } class Vehicle { +startEngine() +stopEngine() } class Car { +drive() } class Motorcycle { +ride() }
Class diagram illustrating inheritance relationships.
Derived Class: The Child's Perspective
A derived class is a class that is created from another class. It 'derives' its characteristics from a base class, extending or specializing its functionality. When you say a class is 'derived,' you are emphasizing its origin and the process of its creation from an existing class. It's the class that does the deriving.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal): # Dog is a derived class from Animal
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def speak(self):
return f"{self.name} says Woof!"
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.speak())
Python example where Dog
is a derived class of Animal
.
Inherited Class: The Parent's Perspective
An inherited class is a class whose properties and methods are 'inherited' by another class. This term is less common in formal OOP literature but is sometimes used informally to refer to the base class or parent class from which others inherit. However, it can also be used to describe the derived class in the context of what it has received. This ambiguity is why 'base class' and 'derived class' are preferred for clarity.
Clarifying the Relationship
The key distinction lies in the active versus passive voice, or the 'from' versus 'by' perspective:
- A class is derived from a base class.
- A class inherits from a base class.
- A base class is inherited by a derived class.
Therefore, 'derived class' refers to the class that extends another, while 'inherited class' is less precise and can refer to either the base class (the one being inherited) or the derived class (the one that has inherited). In most contexts, when people say 'inherited class,' they usually mean the derived class that has gained features through inheritance.
flowchart LR BaseClass["Base Class (Parent)"] DerivedClass["Derived Class (Child)"] BaseClass -- "is inherited by" --> DerivedClass DerivedClass -- "is derived from" --> BaseClass
Relationship between Base and Derived Classes.