Interface In Java
Interfaces in Java An interface in Java is a reference type that contains only abstract methods (until Java 8), default methods, static methods, and constant declarations. It's a way to achieve abstraction and multiple inheritance in Java. Key Characteristics of Interfaces All methods are abstract by default (before Java 8) Cannot be instantiated directly No constructors All fields are public, static, and final by default A class can implement multiple interfaces Basic Interface Syntax public interface Vehicle { // Constant (implicitly public, static, final) int MAX_SPEED = 120; // Abstract method (implicitly public and abstract) void start(); void stop(); // Default method (Java 8+) default void honk() { System.out.println("Honking the horn"); } // Static method (Java 8+) static int getMaxSpeed() { return MAX_SPEED; } } Implementing an Interface public class Car implements Vehicle { @Override public void start() { System.out.println("Car started"); } @Override public void stop() { System.out.println("Car stopped"); } // Can override default method (optional) @Override public void honk() { System.out.println("Car horn: Beep Beep!"); } } New Features in Later Java Versions Java 8 Additions Default methods: Provide default implementation for methods Static methods: Utility methods related to the interface Java 9 Additions Private methods: For code reuse within the interface Multiple Inheritance with Interfaces interface A { void methodA(); } interface B { void methodB(); } class C implements A, B { public void methodA() { /* implementation */ } public void methodB() { /* implementation */ } } Interface vs Abstract Class Feature Interface Abstract Class Methods All abstract (pre-Java 8) Can have concrete methods Variables Only constants Any variables Inheritance Multiple Single Constructors No Yes Access modifiers Public by default Can be any State No instance state Can maintain state Functional Interfaces (Java 8+) An interface with exactly one abstract method (can have multiple default/static methods): @FunctionalInterface interface Calculator { int calculate(int a, int b); default void printResult(int result) { System.out.println("Result: " + result); } } Interfaces are fundamental to Java's design and are widely used for abstraction, polymorphism, and to define contracts that classes must follow.

Interfaces in Java
An interface in Java is a reference type that contains only abstract methods (until Java 8), default methods, static methods, and constant declarations. It's a way to achieve abstraction and multiple inheritance in Java.
Key Characteristics of Interfaces
- All methods are abstract by default (before Java 8)
- Cannot be instantiated directly
- No constructors
- All fields are public, static, and final by default
- A class can implement multiple interfaces
Basic Interface Syntax
public interface Vehicle {
// Constant (implicitly public, static, final)
int MAX_SPEED = 120;
// Abstract method (implicitly public and abstract)
void start();
void stop();
// Default method (Java 8+)
default void honk() {
System.out.println("Honking the horn");
}
// Static method (Java 8+)
static int getMaxSpeed() {
return MAX_SPEED;
}
}
Implementing an Interface
public class Car implements Vehicle {
@Override
public void start() {
System.out.println("Car started");
}
@Override
public void stop() {
System.out.println("Car stopped");
}
// Can override default method (optional)
@Override
public void honk() {
System.out.println("Car horn: Beep Beep!");
}
}
New Features in Later Java Versions
Java 8 Additions
- Default methods: Provide default implementation for methods
- Static methods: Utility methods related to the interface
Java 9 Additions
- Private methods: For code reuse within the interface
Multiple Inheritance with Interfaces
interface A {
void methodA();
}
interface B {
void methodB();
}
class C implements A, B {
public void methodA() { /* implementation */ }
public void methodB() { /* implementation */ }
}
Interface vs Abstract Class
Feature | Interface | Abstract Class |
---|---|---|
Methods | All abstract (pre-Java 8) | Can have concrete methods |
Variables | Only constants | Any variables |
Inheritance | Multiple | Single |
Constructors | No | Yes |
Access modifiers | Public by default | Can be any |
State | No instance state | Can maintain state |
Functional Interfaces (Java 8+)
An interface with exactly one abstract method (can have multiple default/static methods):
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
default void printResult(int result) {
System.out.println("Result: " + result);
}
}
Interfaces are fundamental to Java's design and are widely used for abstraction, polymorphism, and to define contracts that classes must follow.