// Assume we have the simple interface:
interface Appendable {
void append(string content);
}
// We can implement it like that:
class SimplePrinter implements Appendable {
public void append(string content) {
System.out.println(content);
}
}
// ... and maybe like that:
class FileWriter implements Appendable {
public void append(string content) {
// Appends content into a file
}
}
// Both classes are Appendable.
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
An interface can contain:
public constants;
abstract methods without an implementation (the keyword abstract is not required here);
default methods with implementation (the keyword default is required);
static methods with implementation (the keyword static is required);
private methods with implementation.
Java 9 onwards, you can include private methods in interfaces. Before Java 9
it was not possible.
An interface can't contain fields (only constants), constructors,
or non-public abstract methods.
The keyword abstract before a method means that the method does not have a
body, it just declares a signature.
the main idea of an interface is declaring functionality.
Suppose you program a game that has several types of characters.
These characters are able to move within a map. That is represented by Movable
interface
interface Interface {
int INT_CONSTANT = 0; // it's a constant, the same as public static final int INT_FIELD = 0
void instanceMethod1();
void instanceMethod2();
static void staticMethod() {
System.out.println("Interface: static method");
}
default void defaultMethod() {
System.out.println("Interface: default method. It can be overridden");
}
private void privateMethod() {
System.out.println("Interface: private methods in interfaces are acceptable but should have a body");
}
}
Static, default, and private methods should have an implementation in the interface!
/* File name : Animal.java */
interface Animal {
public void eat();
public void travel();
}
In many cases, it is more important to know what an object can do,instead of
how it does what it does. This is a reason why interfaces are commonly used for
declaring a type of variable.
interface : DrawingTool : a tool can draw
interface DrawingTool {
void draw(Curve curve);
}
DrawingTool pencil = new Pencil();
DrawingTool brush = new Brush();
Both Pencil and brush class should implement draw method