Java Inheritance
Java Inheritance is a fundamental concept in object-oriented programming that allows a new class to inherit properties and behaviors (fields and methods) from an existing class. This promotes code reusability and establishes a hierarchical relationship between classes.

Key Concepts
Superclass (Parent Class): The class whose properties and methods are inherited.
Subclass (Child Class): The class that inherits from the superclass.

Usage:
Inheritance is used to create a new class that is a type of an existing class. It helps in extending the functionality of a class without modifying it, thereby adhering to the Open/Closed Principle of software design.

Types of Inheritance:

public class Sivaji {
    public void acting() {
        System.out.println("Acting in Movies");
    }
    private void agri() {
        System.out.println("Farmers");
    }
    public void produce() {
        System.out.println("Producer");
    }
}


public class Prabhu extends Sivaji {
    public static void main(String[] args) {
        Prabhu prabhu = new Prabhu(); 
        prabhu.acting();
    }
    //Overridden Method
    public void acting() {
        System.out.println("Acting in Movies, Ads");
    }
}


public class VikramPrabhu extends Prabhu {

    public static void main(String[] args) {
        VikramPrabhu vikramPrabhu = new VikramPrabhu(); 
        vikramPrabhu.acting();
        vikramPrabhu.produce();
    }
    public void acting() {
        System.out.println("Movies, Ads, Web Series");
    }
}


public class AishwaryaPrabhu extends Prabhu {

    public static void main(String[] args) {
        AishwaryaPrabhu ap = new AishwaryaPrabhu(); 
        ap.acting();
    }
}

extends - key word helps us to Inherit the properties.

Types of Inheritances
1). Single inheritance:
Sivaji -> Prabhu

2). Multi-Level Inheritance:
Sivaji -> Prabhu -> VikramPrabhu (or)
Sivaji -> Prabhu -> AishwaryaPrabhu

3). Hierarchical Inheritance: one parent with more than one child class
Prabhu -> VikramPrabhu
-> AishwaryaPrabhu

4). Hybrid Inheritance: Combining more than one type of Inheritance.
[Single + Hierarchical]
[Multilevel + Hierarchical]

5). Java is not supporting Multiple Inheritance, directly.

Ref: https://www.datacamp.com/doc/java/inheritance