Interfaces in Java

Last updated on Dec 24 2022
Prabhas Ramanathan

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.
Java Interface also represents the IS-A relationship.
It cannot be instantiated just like the abstract class.
Since Java 8, we can have default and static methods in an interface.
Since Java 9, we can have private methods in an interface.

Table of Contents

Why use Java interface?

There are mainly three reasons to use interface. They are given below.
• It is used to achieve abstraction.
• By interface, we can support the functionality of multiple inheritance.
• It can be used to achieve loose coupling.

java 64

How to declare an interface?

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:

1. interface <interface_name>{ 
2. 
3. // declare constant fields 
4. // declare methods that abstract 
5. // by default. 
6. }

Java 8 Interface Improvement

Since Java 8, interface can have default and static methods which is discussed later.

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.

java 65

As shown in the figure given below, a class extends another class, an interface extends another interface, but a class implements an interface.

java 66

Java Interface Example

In this example, the Printable interface has only one method, and its implementation is provided in the A6 class.

1. interface printable{ 
2. void print(); 
3. } 
4. class A6 implements printable{ 
5. public void print(){System.out.println("Hello");} 
6. 
7. public static void main(String args[]){ 
8. A6 obj = new A6(); 
9. obj.print(); 
10. } 
11. }

 

Output:
Hello

Java Interface Example: Drawable

In this example, the Drawable interface has only one method. Its implementation is provided by Rectangle and Circle classes. In a real scenario, an interface is defined by someone else, but its implementation is provided by different implementation providers. Moreover, it is used by someone else. The implementation part is hidden by the user who uses the interface.
File: TestInterface1.java

1. //Interface declaration: by first user 
2. interface Drawable{ 
3. void draw(); 
4. } 
5. //Implementation: by second user 
6. class Rectangle implements Drawable{ 
7. public void draw(){System.out.println("drawing rectangle");} 
8. } 
9. class Circle implements Drawable{ 
10. public void draw(){System.out.println("drawing circle");} 
11. } 
12. //Using interface: by third user 
13. class TestInterface1{ 
14. public static void main(String args[]){ 
15. Drawable d=new Circle();//In real scenario, object is provided by method e.g. getDrawable() 
16. d.draw(); 
17. }}

 

Output:
drawing circle

Java Interface Example: Bank

Let’s see another example of java interface which provides the implementation of Bank interface.
File: TestInterface2.java

1. interface Bank{
2. float rateOfInterest();
3. }
4. class SBI implements Bank{
5. public float rateOfInterest(){return 9.15f;}
6. }
7. class PNB implements Bank{
8. public float rateOfInterest(){return 9.7f;}
9. }
10. class TestInterface2{
11. public static void main(String[] args){
12. Bank b=new SBI();
13. System.out.println("ROI: "+b.rateOfInterest());
14. }}

 

Output:
ROI: 9.15

 

Multiple inheritance in Java by interface

If a class implements multiple interfaces, or an interface extends multiple interfaces, it is known as multiple inheritance.

java 67

 

1. interface Printable{ 
2. void print(); 
3. } 
4. interface Showable{ 
5. void show(); 
6. } 
7. class A7 implements Printable,Showable{ 
8. public void print(){System.out.println("Hello");} 
9. public void show(){System.out.println("Welcome");} 
10. 
11. public static void main(String args[]){ 
12. A7 obj = new A7(); 
13. obj.print(); 
14. obj.show(); 
15. } 
16. }

 

Output:Hello
Welcome

Q) Multiple inheritance is not supported through class in java, but it is possible by an interface, why?

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:

1. interface Printable{ 
2. void print(); 
3. } 
4. interface Showable{ 
5. void print(); 
6. } 
7. 
8. class TestInterface3 implements Printable, Showable{ 
9. public void print(){System.out.println("Hello");} 
10. public static void main(String args[]){ 
11. TestInterface3 obj = new TestInterface3(); 
12. obj.print(); 
13. } 
14. }

 

Output:
Hello

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.

1. interface Printable{ 
2. void print(); 
3. } 
4. interface Showable extends Printable{ 
5. void show(); 
6. } 
7. class TestInterface4 implements Showable{ 
8. public void print(){System.out.println("Hello");} 
9. public void show(){System.out.println("Welcome");} 
10. 
11. public static void main(String args[]){ 
12. TestInterface4 obj = new TestInterface4(); 
13. obj.print(); 
14. obj.show(); 
15. } 
16. }

 

Output:
Hello
Welcome

Java 8 Default Method in Interface

Since Java 8, we can have method body in interface. But we need to make it default method. Let’s see an example:
File: TestInterfaceDefault.java

1. interface Drawable{ 
2. void draw(); 
3. default void msg(){System.out.println("default method");} 
4. } 
5. class Rectangle implements Drawable{ 
6. public void draw(){System.out.println("drawing rectangle");} 
7. } 
8. class TestInterfaceDefault{ 
9. public static void main(String args[]){ 
10. Drawable d=new Rectangle(); 
11. d.draw(); 
12. d.msg(); 
13. }}

 

Output:
drawing rectangle

default method

Java 8 Static Method in Interface

Since Java 8, we can have static method in interface. Let’s see an example:
File: TestInterfaceStatic.java

1. interface Drawable{ 
2. void draw(); 
3. static int cube(int x){return x*x*x;} 
4. } 
5. class Rectangle implements Drawable{ 
6. public void draw(){System.out.println("drawing rectangle");} 
7. } 
8. 
9. class TestInterfaceStatic{ 
10. public static void main(String args[]){ 
11. Drawable d=new Rectangle(); 
12. d.draw(); 
13. System.out.println(Drawable.cube(3)); 
14. }}

 

Output:
drawing rectangle
27

Q) What is marker or tagged interface?

An interface which has no member is known as a marker or tagged interface, for example, Serializable, Cloneable, Remote, etc. They are used to provide some essential information to the JVM so that JVM may perform some useful operation.

1. //How Serializable interface is written?
2. public interface Serializable{
3. }

Nested Interface in Java
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:

1. interface printable{ 
2. void print(); 
3. interface MessagePrintable{ 
4. void msg(); 
5. } 
6. }

Difference between abstract class and interface

Abstract class and interface both are used to achieve abstraction where we can declare the abstract methods. Abstract class and interface both can’t be instantiated.
But there are many differences between abstract class and interface that are given below.

Abstract class Interface
1) Abstract class can have abstract and non-abstract methods. Interface can have only abstract methods. Since Java 8, it can have default and static methods also.
2) Abstract class doesn’t support multiple inheritance. Interface supports multiple inheritance.
3) Abstract class can have final, non-final, static and non-static variables. Interface has only static and final variables.
4) Abstract class can provide the implementation of interface. Interface can’t provide the implementation of abstract class.
5) The abstract keyword is used to declare abstract class. The interface keyword is used to declare interface.
6) An abstract class can extend another Java class and implement multiple Java interfaces. An interface can extend another Java interface only.
7) An abstract class can be extended using keyword “extends”. An interface can be implemented using keyword “implements”.
8) A Java abstract class can have class members like private, protected, etc. Members of a Java interface are public by default.
9)Example:
public abstract class Shape{
public abstract void draw();
}
Example:
public interface Drawable{
void draw();
}

Simply, abstract class achieves partial abstraction (0 to 100%) whereas interface achieves fully abstraction (100%).

Example of abstract class and interface in Java

Let’s see a simple example where we are using interface and abstract class both.

1. //Creating interface that has 4 methods 
2. interface A{ 
3. void a();//bydefault, public and abstract 
4. void b(); 
5. void c(); 
6. void d(); 
7. } 
8. 
9. //Creating abstract class that provides the implementation of one method of A interface 
10. abstract class B implements A{ 
11. public void c(){System.out.println("I am C");} 
12. } 
13. 
14. //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods 
15. class M extends B{ 
16. public void a(){System.out.println("I am a");} 
17. public void b(){System.out.println("I am b");} 
18. public void d(){System.out.println("I am d");} 
19. } 
20. 
21. //Creating a test class that calls the methods of A interface 
22. class Test5{ 
23. public static void main(String args[]){ 
24. A a=new M(); 
25. a.a(); 
26. a.b(); 
27. a.c(); 
28. a.d(); 
29. }}

 

Output:
I am a
I am b
I am c
I am d

So, this brings us to the end of blog. This Tecklearn ‘Interfaces in Java’ blog helps you with commonly asked questions if you are looking out for a job in Java Programming. If you wish to learn Java and build a career Java Programming domain, then check out our interactive, Java and JEE Training, that comes with 24*7 support to guide you throughout your learning period. Please find the link for course details:

Java and JEE Training

Java and JEE Training

About the Course

Java and JEE Certification Training is designed by professionals as per the industrial requirements and demands. This training encompasses comprehensive knowledge on basic and advanced concepts of core Java & J2EE along with popular frameworks like Hibernate, Spring & SOA. In this course, you will gain expertise in concepts like Java Array, Java OOPs, Java Function, Java Loops, Java Collections, Java Thread, Java Servlet, and Web Services using industry use-cases and this will help you to become a certified Java expert.

Why Should you take Java and JEE Training?

• Java developers are in great demand in the job market. With average pay going between $90,000/- to $120,000/- depending on your experience and the employers.
• Used by more than 10 Million developers worldwide to develop applications for 15 Billion devices.
• Java is one of the most popular programming languages in the software world. Rated #1 in TIOBE Popular programming languages index (15th Consecutive Year)

What you will Learn in this Course?

Introduction to Java

• Java Fundamentals
• Introduction to Java Basics
• Features of Java
• Various components of Java language
• Benefits of Java over other programming languages
• Key Benefits of Java

Installation and IDE’s for Java Programming Language

• Installation of Java
• Setting up of Eclipse IDE
• Components of Java Program
• Editors and IDEs used for Java Programming
• Writing a Simple Java Program

Data Handling and Functions

• Data types, Operations, Compilation process, Class files, Loops, Conditions
• Using Loop Constructs
• Arrays- Single Dimensional and Multi-Dimensional
• Functions
• Functions with Arguments

OOPS in Java: Concept of Object Orientation

• Object Oriented Programming in Java
• Implement classes and objects in Java
• Create Class Constructors
• Overload Constructors
• Inheritance
• Inherit Classes and create sub-classes
• Implement abstract classes and methods
• Use static keyword
• Implement Interfaces and use it

Polymorphism, Packages and String Handling

• Concept of Static and Run time Polymorphism
• Function Overloading
• String Handling –String Class
• Java Packages

Exception Handling and Multi-Threading

• Exception handling
• Various Types of Exception Handling
• Introduction to multi-threading in Java
• Extending the thread class
• Synchronizing the thread

File Handling in Java

• Input Output Streams
• Java.io Package
• File Handling in Java

Java Collections

• Wrapper Classes and Inner Classes: Integer, Character, Boolean, Float etc
• Applet Programs: How to write UI programs with Applet, Java.lang, Java.io, Java.util
• Collections: ArrayList, Vector, HashSet, TreeSet, HashMap, HashTable

Java Database Connectivity (JDBC)

• Introduction to SQL: Connect, Insert, Update, Delete, Select
• Introduction to JDBC and Architecture of JDBC
• Insert/Update/Delete/Select Operations using JDBC
• Batch Processing Transaction
• Management: Commit and Rollback

Java Enterprise Edition – Servlets

• Introduction to J2EE
• Client Server architecture
• URL, Port Number, Request, Response
• Need for servlets
• Servlet fundamentals
• Setting up a web project in Eclipse
• Configuring and running the web app with servlets
• GET and POST request in web application with demo
• Servlet lifecycle
• Servlets Continued
• Session tracking and filter
• Forward and include Servlet request dispatchers

Java Server Pages (JSP)

• Fundamentals of Java Server Page
• Writing a code using JSP
• The architecture of JSP
• JSP Continued
• JSP elements: Scriptlets, expressions, declaration
• JSP standard actions
• JSP directives
• Introduction to JavaBeans
• ServletConfig and ServletContext
• Servlet Chaining
• Cookies Management
• Session Management

Hibernate

• Introduction to Hibernate
• Introduction to ORM
• ORM features
• Hibernate as an ORM framework
• Hibernate features
• Setting up a project with Hibernate framework
• Basic APIs needed to do CRUD operations with Hibernate
• Hibernate Architecture

POJO (Plain Old Java Object)

• POJO (Plain Old Java Object)
• Persistent Objects
• Lifecycle of Persistent Object

Spring

• Introduction to Spring
• Spring Fundamentals
• Advanced Spring

Got a question for us? Please mention it in the comments section and we will get back to you.

 

 

 

0 responses on "Interfaces in Java"

Leave a Message

Your email address will not be published. Required fields are marked *