Java Inheritance


Inheritance is one of the key features of Object Oriented Programming. Inheritance provided mechanism that allowed a class to inherit property of another class.

When a Class extends another class it inherits all non-private members including fields and methods.

Inheritance in Java can be best understood in terms of Parent and Child relationship, also known as Super class(Parent) and Sub class(child) in Java language.

Inheritance defines is-a relationship between a Super class and its Sub class. extends and implements keywords are used to describe inheritance in Java.

Let us see how extend keyword is used to achieve Inheritance.

class Student 
{
  ......  
}
class Collage extends Student
{
 .......   //extends the property of Student class.
}

Now based on above example. In OOPs term we can say that,

  • Student is super class of Collage.
  • Collage is sub class of Student.
  • Collage IS-A Student.

Purpose of Inheritance

  1. To promote code reuse.
  2. To use Polymorphism.

Simple example of Inheritance

class Parent
{
    public void p1()
    {
        System.out.println("Parent method");
    }
}
public class Child extends Parent {
    public void c1()
    {
        System.out.println("Child method");
    }
    public static void main(String[] args)
    {
        Child cobj = new Child();
        cobj.c1();   //method of Child class
        cobj.p1();   //method of Parent class 
    }
}
Output
Child method
Parent method

Another example of Inheritance

class Vehicle
{
    String vehicleType;
}
public class Car extends Vehicle {
    
    String modelType;
    public void showDetail()
    {
        vehicleType = "Car";        //accessing Vehicle class member
        modelType = "sports";
        System.out.println(modelType+" "+vehicleType);
    }
    public static void main(String[] args)
    {
        Car car =new Car();
        car.showDetail();
    }
}
Output
sports Car

Types of Inheritance

  1. Single Inheritance - View Example
  2. Multilevel Inheritance - View Example
  3. Heirarchical Inheritance - View Example

NOTE :Multiple inheritance is not supported in java


Why multiple inheritance is not supported in Java

  • To remove ambiguity.
  • To provide more maintainable and clear design.

super keyword

In Java, super keyword is used to refer to immediate parent class of a class. In other words super keyword is used by a subclass whenever it need to refer to its immediate super class.

Example of Child class refering Parent class property using super keyword

class Parent
{
    String name;
    
}
public class Child extends Parent {
    String name;
    public void details()
    {
        super.name = "Parent";	    //refers to parent class member
        name = "Child";
        System.out.println(super.name+" and "+name);
    }
    public static void main(String[] args)
    {
        Child cobj = new Child();
        cobj.details();
    }
}
Output
Parent and Child

Example of Child class refering Parent class methods using super keyword

class Parent
{
    String name;
    public void details()
    {
      name = "Parent";
        System.out.println(name);
    }  
}
public class Child extends Parent {
    String name;
    public void details()
    {
        super.details();	//calling Parent class details() method
        name = "Child";
        System.out.println(name);
    }
    public static void main(String[] args)
    {
        Child cobj = new Child();
        cobj.details();
    }
}
Output
Parent
Child

Example of Child class calling Parent class constructor using super keyword

class Parent
{
    String name;

    public Parent(String n) 
    {
        name = n;
    }
    
}
public class Child extends Parent {
    String name;

    public Child(String n1, String n2) 
    {
        
        super(n1);       //passing argument to parent class constructor
        this.name = n2;
    }
    public void details()
    {
        System.out.println(super.name+" and "+name);
    }
     public static void main(String[] args)
    {
        Child cobj = new Child("Parent","Child");
        cobj.details();
    }
}
Output
Parent and Child

Share this article on