Inheritance

Inheritance is one of the core principles of Object-Oriented Programming (OOP) in Java. It allows one class to acquire the properties and behaviors of another class. By using inheritance, developers can reuse existing code, reduce duplication, and create a logical relationship between classes.

Inheritance helps build applications that are easier to maintain, extend, and manage. It is widely used in Java development, Android applications, enterprise software, and large-scale systems.

What is Inheritance in Java?

Inheritance is the process through which one class inherits fields and methods from another class.

The class being inherited from is called the parent class, superclass, or base class.

The class that inherits is called the child class, subclass, or derived class.

Inheritance creates an “is-a” relationship between classes.

Example:

  • Car is a Vehicle
  • Dog is an Animal
  • Student is a Person

These relationships can be represented using inheritance.

Why Use Inheritance?

Inheritance provides several advantages:

  • Promotes code reusability
  • Reduces code duplication
  • Improves maintainability
  • Simplifies application development
  • Supports method overriding
  • Creates logical class hierarchies
  • Enhances Object-Oriented Design

It is one of the most important concepts in Java programming.

Syntax of Inheritance

Java uses the extends keyword to implement inheritance.

Example:

class Parent {

    // parent class members

}

class Child extends Parent {

    // child class members

}

The child class automatically gains access to accessible members of the parent class.

Basic Example of Inheritance

class Animal {

    void eat() {

        System.out.println("Animal is eating");

    }

}

class Dog extends Animal {

}

Using the classes:

public class Main {

    public static void main(String[] args) {

        Dog dog = new Dog();

        dog.eat();

    }

}

Output:

Animal is eating

The Dog class inherits the eat() method from the Animal class.

Understanding Parent and Child Classes

Example:

class Person {

    String name;

}
class Student extends Person {

    int rollNumber;

}

The Student class automatically inherits the name variable from the Person class.

Usage:

Student student = new Student();

student.name = "Ali";
student.rollNumber = 101;

The object can access both inherited and its own members.

Types of Inheritance in Java

Java supports several inheritance concepts.

Single Inheritance

A child class inherits from one parent class.

Example:

class Animal {

}

class Dog extends Animal {

}

This is the most common form of inheritance.

Multilevel Inheritance

A class inherits from a child class that already inherited from another class.

Example:

class Animal {

}

class Dog extends Animal {

}

class Puppy extends Dog {

}

Puppy inherits features from both Dog and Animal.

Hierarchical Inheritance

Multiple child classes inherit from the same parent class.

Example:

class Animal {

}

class Dog extends Animal {

}

class Cat extends Animal {

}

Both Dog and Cat inherit from Animal.

Why Java Does Not Support Multiple Inheritance with Classes

Java does not allow multiple inheritance through classes because it can create ambiguity problems.

Incorrect:

class A {

}

class B {

}

class C extends A, B {

}

This is not allowed in Java.

Instead, Java uses interfaces to achieve multiple inheritance behavior.

Inherited Members

A child class can inherit:

  • Variables
  • Methods
  • Constructors (through constructor chaining)
  • Protected members

Example:

class Vehicle {

    String brand = "Toyota";

    void start() {

        System.out.println("Vehicle Started");

    }

}
class Car extends Vehicle {

}

Using the object:

Car car = new Car();

System.out.println(car.brand);

car.start();

Output:

Toyota
Vehicle Started

The child class gains access to inherited members.

Method Inheritance Example

class Person {

    void display() {

        System.out.println("Person Information");

    }

}
class Student extends Person {

}

Using the method:

Student student = new Student();

student.display();

Output:

Person Information

Methods can be reused through inheritance.

The super Keyword

The super keyword refers to the parent class.

It is used to:

  • Access parent variables
  • Call parent methods
  • Invoke parent constructors

Example:

class Animal {

    void sound() {

        System.out.println("Animal Sound");

    }

}
class Dog extends Animal {

    void display() {

        super.sound();

    }

}

Output:

Animal Sound

The super keyword provides access to parent class functionality.

Constructor Inheritance

Constructors are not directly inherited, but parent constructors can be called using super().

Example:

class Person {

    Person() {

        System.out.println("Person Constructor");

    }

}
class Student extends Person {

    Student() {

        super();

    }

}

Output:

Person Constructor

This helps initialize parent class data.

Real-World Example

Employee management system:

class Employee {

    String company = "ABC Ltd";

    void work() {

        System.out.println("Employee Working");

    }

}
class Manager extends Employee {

    void manage() {

        System.out.println("Managing Team");

    }

}

Usage:

Manager manager = new Manager();

System.out.println(manager.company);

manager.work();

manager.manage();

Output:

ABC Ltd
Employee Working
Managing Team

Inheritance reduces duplicate code and improves efficiency.

Benefits of Inheritance

Code Reusability

Existing code can be reused instead of rewritten.

Reduced Redundancy

Common functionality remains in the parent class.

Easier Maintenance

Updates made in the parent class automatically affect child classes.

Better Organization

Classes can be arranged logically.

Supports Polymorphism

Inheritance serves as the foundation for polymorphism.

Faster Development

Developers can extend existing classes rather than creating everything from scratch.

Applications of Inheritance

Inheritance is used in:

  • Android application development
  • Banking systems
  • Hospital management software
  • E-commerce platforms
  • Educational systems
  • Game development
  • Enterprise software
  • Inventory management systems

It plays a major role in modern software architecture.

Common Beginner Mistakes

Confusing Inheritance with Object Creation

Inheritance creates relationships between classes, not objects.

Using Private Members Directly

Private members cannot be inherited directly.

Incorrect Class Hierarchies

Inheritance should represent an actual “is-a” relationship.

Incorrect example:

Car extends Engine

A car is not an engine.

Forgetting the extends Keyword

Without extends, inheritance does not occur.

Best Practices

When using inheritance:

  • Use inheritance only for true “is-a” relationships
  • Avoid unnecessary inheritance levels
  • Keep parent classes generic
  • Use protected access when appropriate
  • Combine inheritance with encapsulation
  • Prefer composition when inheritance is not suitable

These practices improve software design and maintainability.

Importance of Inheritance

Inheritance is important because it:

  • Promotes code reuse
  • Simplifies software development
  • Reduces duplication
  • Supports scalability
  • Enables advanced OOP concepts
  • Improves application structure

It is a fundamental building block of Object-Oriented Programming.

Conclusion

Inheritance in Java allows a child class to acquire the properties and behaviors of a parent class. By using the extends keyword, developers can create reusable, organized, and maintainable code while reducing duplication. Mastering inheritance is essential for understanding Object-Oriented Programming and building professional Java, Android, and enterprise software applications.

Home » Intermediate Java > Object-Oriented Programming > Inheritance