Inheritance in Java

Inheritance in Java is a mechanism in which one object acquires all the properties and behaviors of a parent object. It is an important part of OOPs (Object Oriented programming system).

The idea behind inheritance in Java is that you can create new classes that are built upon existing classes. When you inherit from an existing class, you can reuse methods and fields of the parent class. Moreover, you can add new methods and fields in your current class also.

Inheritance represents the IS-A relationship which is also known as a parent-child relationship.

Why use inheritance in java

  • For Method Overriding (so runtime polymorphism can be achieved).
  • For Code Reusability.

Terms used in Inheritance

  • Class: A class is a group of objects which have common properties. It is a template or blueprint from which objects are created.
  • Sub Class/Child Class: Subclass is a class which inherits the other class. It is also called a derived class, extended class, or child class.
  • Super Class/Parent Class: Superclass is the class from where a subclass inherits the features. It is also called a base class or a parent class.
  • Reusability: As the name specifies, reusability is a mechanism which facilitates you to reuse the fields and methods of the existing class when you create a new class. You can use the same fields and methods already defined in the previous class.
    Types of inheritance in java On the basis of class, there can be three types of inheritance in java: single, multilevel and hierarchical. In java programming, multiple and hybrid inheritance is supported through interface only. We will learn about interfaces later.
Types of inheritance in Java
Multiple inheritance in Java

1).Single Inheritance 

Example:-

class Animal

{
void eat()

{

System.out.println(“eating…”);

}
}
class Dog extends Animal

{
void bark()

{System.out.println(“barking…”);

}
}
class TestInheritance

{
public static void main(String args[])

{
Dog d=new Dog();
d.bark();
d.eat();
}}

2).Multilevel Inheritance 

Example:-

class Animal

{
void eat()

{

System.out.println(“eating…”);

}
}
class Dog extends Animal

{
void bark()

{

System.out.println(“barking…”);

}
}
class BabyDog extends Dog

{
void weep(){System.out.println(“weeping…”);

}
}
class TestInheritance2

{
public static void main(String args[])

{
BabyDog d=new BabyDog();
d.weep();
d.bark();
d.eat();
}

}

3)Hierarchical Inheritance Example

class Animal

{
void eat()

{

System.out.println(“eating…”);

}
}
class Dog extends Animal

{
void bark(){System.out.println(“barking…”);

}
}
class Cat extends Animal

{
void meow()

{

System.out.println(“meowing…”);

}
}
class TestInheritance3

{
public static void main(String args[])

{
Cat c=new Cat();
c.meow();
c.eat();
//c.bark();//C.T.Error
}

}

4).Multiple Inheritance in Java

When one class extends more than one classes then this is called multiple inheritance. For example: Class C extends class A and B then this type of inheritance is known as multiple inheritance. Java doesn’t allow multiple inheritance. 

Why Java doesn’t support multiple inheritance?

C++ , Common lisp and few other languages supports multiple inheritance while java doesn’t support it. Java doesn’t allow multiple inheritance to avoid the ambiguity caused by it. One of the example of such problem is the diamond problem that occurs in multiple inheritance.

To reduce the complexity and simplify the language, multiple inheritance is not supported in java.

Consider a scenario where A, B, and C are three classes. The C class inherits A and B classes. If A and B classes have the same method and you call it from child class object, there will be ambiguity to call the method of A or B class.

    GrandParent
           /     \
          /       \
      Parent1      Parent2
          \       /
           \     /
             Test

Solution:-

Multiple inheritance in java can be implemented by the use of interfaces.

What is Interface in java:-

Interfaces are declared using the interface keyword, and may only contain method signature and constant declarations (variable declarations that are declared to be both static and final).

default and static methods may have implementation in the interface definition.

Interfaces cannot be instantiated, but rather are implemented. A class that implements an interface must implement all of the non-default methods described in the interface, or be an abstract class

Super Keyword in java

The super keyword in Java is a reference variable which is used to refer immediate parent class object.

Example:-

interface PI1 
{ 
    // default method 
    default void show() 
    { 
        System.out.println("Default PI1"); 
    } 
} 
  
interface PI2 
{ 
    // Default method 
    default void show() 
    { 
        System.out.println("Default PI2"); 
    } 
} 
  
// Implementation class code 
class Multipleinheritance implements PI1, PI2 
{ 
    // Overriding default show method 
    public void show() 
    { 
        // use super keyword to call the show 
        // method of PI1 interface 
        PI1.super.show(); 
  
        // use super keyword to call the show 
        // method of PI2 interface 
        PI2.super.show(); 
    } 
  
    public static void main(String args[]) 
    { 
        Multipleinheritance d = new Multipleinheritance(); 
        d.show(); 
    } 
}

Hits: 26

Share your thoughts