Java interfaces are abstract classes that define a contract or a set of methods that must be implemented by any class that implements it. In this tutorial, we will learn about the basics of Java interfaces, how to define and implement them, and their use cases.
Defining an Interface
An interface in Java is defined using the `interface` keyword. Here is an example of a simple interface:
public interface Printable {
void print();
}
In this example, we define an interface called `Printable` with a single method `print()`. Any class that implements this interface must provide an implementation for the `print()` method.
Implementing an Interface
To implement an interface, we use the `implements` keyword. Here is an example of a class that implements the `Printable` interface:
public class Document implements Printable {
@Override
public void print() {
System.out.println("Printing a document...");
}
}
In this example, we define a class called `Document` that implements the `Printable` interface. We provide an implementation for the `print()` method, which is required by the interface.
Multiple Inheritance with Interfaces
One of the key benefits of interfaces is that they allow for multiple inheritance. A class can implement multiple interfaces, but it can only extend one class. Here is an example:
public interface Printable {
void print();
}
public interface Shareable {
void share();
}
public class Document implements Printable, Shareable {
@Override
public void print() {
System.out.println("Printing a document...");
}
@Override
public void share() {
System.out.println("Sharing a document...");
}
}
In this example, we define two interfaces: `Printable` and `Shareable`. We then define a class called `Document` that implements both interfaces. This allows the `Document` class to inherit behavior from both interfaces.
Interface Methods with Default Implementations
Java 8 introduced the ability to add default implementations to interface methods. This allows us to provide a default implementation for a method that can be overridden by classes that implement the interface. Here is an example:
public interface Printable {
void print();
default void printTwice() {
print();
print();
}
}
In this example, we define an interface called `Printable` with a method `print()` and a default method `printTwice()`. The `printTwice()` method provides a default implementation that can be used by classes that implement the interface.
Interface Static Methods
Java 8 also introduced the ability to add static methods to interfaces. This allows us to provide utility methods that can be used by classes that implement the interface. Here is an example:
public interface Printable {
void print();
static void printAll(Printable[] printables) {
for (Printable printable : printables) {
printable.print();
}
}
}
In this example, we define an interface called `Printable` with a method `print()` and a static method `printAll()`. The `printAll()` method provides a utility method that can be used to print all elements in an array of `Printable` objects.
Conclusion
In this tutorial, we learned about the basics of Java interfaces, how to define and implement them, and their use cases. We also learned about the new features introduced in Java 8, such as default methods and static methods. Interfaces are a powerful tool in Java programming, and they can help us to write more flexible and maintainable code.
Comments
Post a Comment