Interface in Java - Javatpoint
Interface in Java - Javatpoint
ADVERTISEMENT
An interface in Java is a blueprint of a class. It has static constants and abstract methods.
The interface in Java is a mechanism to achieve abstraction. There can be only abstract methods
in the Java interface, not method body. It is used to achieve abstraction and multiple inheritance
in Java.
In other words, you can say that interfaces can have abstract methods and variables. It cannot
have a method body.
There are mainly three reasons to use interface. They are given below.
An interface is declared by using the interface keyword. It provides total abstraction; means all the
methods in an interface are declared with the empty body, and all the fields are public, static and
final by default. A class that implements an interface must implement all the methods declared in
the interface.
Syntax: ADVERTISEMENT
ADVERTISEMENT
interface <interface_name>{
Since Java 8, interface can have default and static methods which is discussed later.
ADVERTISEMENT
Internal addition by the compiler
The Java compiler adds public and abstract keywords before the interface method. Moreover,
it adds public, static and final keywords before data members.
In other words, Interface fields are public, static and final by default, and the methods are public
and abstract.
ADVERTISEMENT
ADVERTISEMENT
The relationship between classes and interfaces
As shown in the figure given below, a class extends another class, an interface extends another
interface, but a class implements an interface.
ADVERTISEMENT
Java Interface Example
In this example, the Printable interface has only one method, and its implementation is provided in
the A6 class.
interface printable{
void print();
}
class A6 implements printable{
ADVERTISEMENT
public static void main(String args[]){
A6 obj = new A6();
obj.print();
}
}
Test it Now
Output:
Hello
File: TestInterface1.java
ADVERTISEMENT
//Interface declaration: by first user
interface Drawable{
void draw();
}
//Implementation: by second user
class Rectangle implements Drawable{
}
class Circle implements Drawable{
}
//Using interface: by third user
class TestInterface1{
Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable()
d.draw();
}}
Test it Now
Output:
ADVERTISEMENT
ADVERTISEMENT
drawing circle
File: TestInterface2.java
interface Bank{
float rateOfInterest();
}
class SBI implements Bank{
}
class PNB implements Bank{
}
class TestInterface2{
Test it Now
Output:
ROI: 9.15
ADVERTISEMENT
Multiple inheritance in Java by interface
If a class implements multiple interfaces, or an interface extends multiple interfaces, it is known
as multiple inheritance.
interface Printable{
void print();
}
interface Showable{
void show();
}
class A7 implements Printable,Showable{
ADVERTISEMENT
Test it Now
Output:Hello
Welcome
As we have explained in the inheritance chapter, multiple inheritance is not supported in the case
of class because of ambiguity. However, it is supported in case of an interface because there is
no ambiguity. It is because its implementation is provided by the implementation class. For
example:
interface Printable{
void print();
}
interface Showable{
void print();
Test it Now
Output:
Hello
ADVERTISEMENT
As you can see in the above example, Printable and Showable interface have same methods but
its implementation is provided by class TestTnterface1, so there is no ambiguity.
Interface inheritance
A class implements an interface, but one interface extends another interface.
interface Printable{
void print();
}
interface Showable extends Printable{
void show();
}
class TestInterface4 implements Showable{
Test it Now
Output:
Hello
Welcome
File: TestInterfaceDefault.java
interface Drawable{
void draw();
}
class Rectangle implements Drawable{
}
class TestInterfaceDefault{
Test it Now
Output:
drawing rectangle
default method
File: TestInterfaceStatic.java
interface Drawable{
void draw();
}
class Rectangle implements Drawable{
ADVERTISEMENT
public void draw(){System.out.println("drawing rectangle");}
}
class TestInterfaceStatic{
Test it Now
Output:
drawing rectangle
27
Note: An interface can have another interface which is known as a nested interface. We will learn
it in detail in the nested classes chapter. For example:
ADVERTISEMENT
interface printable{
void print();