Inheritance is a compile-time mechanism in Java that allows you to extend a class called the( base class or superclass) with another class (called the derived class or subclass).

 In Java,inheritance is used for two purposes:

1. class inheritance - create a new class as an extension of another class, primarily for the purpose of code reuse. That is, the derived class inherits the public methods and public data of the base class. Java only allows a class to have one immediate base class, i.e., single class inheritance.

2. interface inheritance - create a new class to implement the methods defined as part of an interface for the purpose of subtyping. That is a class that implements an interface “conforms to” (or is constrained by the type of) the interface. Java supports multiple interface inheritance.

In Java, these two kinds of inheritance are made distinct by using different language syntax. For class inheritance, Java uses the keyword extends and for interface inheritance Java uses the keyword implements.

public class derived-class-name extends base-class-name {
// derived class methods extend and possibly override
// those of the base class
}
public class class-name implements interface-name {
// class provides an implementation for the methods
// as specified by the interface
}

Example of class inheritance

#include<iostream.h>
class Base{
              int a;
    public:
              int b;
              void get_ab();
              int get_a(void);
              void show_a(void);
};
class Derived : public Base{
              int c;
   public:
            void mul(void);
            void display(void);
};
void Base ::get_ab(void)
{
            a=5;b=10;
}
int Base :: get_a()
{
            return a;
}
void Base : : show_a()
{
            cout<<”a=”<<a<<”\n”;
}
void Derived : : mul()
{
            c=b*get_a();
}
void Derived : : display()
{
            cout<<”a=” <<get_a()<<”\n”;
            cout<<”b=”<<b<<”\n”;
            cout<<”c=”<<c<<”\n\n”;
}

int main()
{
            Derived d;
d.get_ab();
d.mul();
d.show_a();
d.display();

d.b=20;
d.mul();
d.display();

return 0;
}