A default method from interface provides a default implementation, but does not override the default method.
default method are added so the existing interfaces may evolve.
A default method in an interface is declared with the modifier default.
A default method cannot be declared abstract or static.
It must provide an implementation.
interface Movable { void setX(double x); void setY(double y); double getX();/*from w w w . j a v a2 s . c o m*/ double getY(); // A default method default void move(double deltaX, double deltaY) { double newX = getX() + deltaX; double newY = getY() + deltaY; setX(newX); setY(newY); } } class Pen implements Movable { private double x, y; @Override public void setX(double x) { this.x = x; } @Override public void setY(double y) { this.y = y; } @Override public double getX() { return x; } @Override public double getY() { return y; } @Override public String toString() { return "Pen [x=" + x + ", y=" + y + "]"; } } public class Main { public static void main(String[] args) { // Create a Pen and assign its reference to a Movable variable Movable p1 = new Pen(); System.out.println(p1); // Move the Pen using absolute cocordinates p1.setX(10.0); p1.setY(5.0); System.out.println(p1); // Move the Pen using relative cocordinates p1.move(5.0, 2.0); System.out.println(p1); } }