You can have static methods in interfaces.
A static method contains the static modifier.
They are implicitly public.
interface Walkable { // An abstract method void walk(); // A static convenience method public static void letThemWalk(Walkable[] list) { for (int i = 0; i < list.length; i++) { list[i].walk(); } } }
You can use the static methods of an interface using the dot notation.
<interface-name>.<static-method>
The following code calls the Walkable.letThemWalk() method:
Walkable[] w = new Walkable[4]; w[0] = new Person("A"); w[1] = new Duck("B"); w[2] = new Person("C"); w[3] = new Cat("Mary"); // Let everyone walk Walkable.letThemWalk(w);
interface Walkable { void walk(); // w ww .j ava 2s . c o m public static void letThemWalk(Walkable[] list) { for (Walkable w : list) { w.walk(); } } } // The Person Class, Which Implements the Walkable Interface class Person implements Walkable { private String name; public Person(String name) { this.name = name; } public void walk() { System.out.println(name + " (a person) is walking."); } } // The Duck Class, Which Implements the Walkable Interface class Duck implements Walkable { private String name; public Duck(String name) { this.name = name; } public void walk() { System.out.println(name + " (a duck) is walking."); } } class Cat implements Walkable { private String name; public Cat(String name) { this.name = name; } public void walk() { System.out.println(name + " (a cat) is walking."); } } public class Main { public static void main(String[] args) { Walkable[] w = new Walkable[4]; w[0] = new Person("A"); w[1] = new Duck("B"); w[2] = new Person("C"); w[3] = new Cat("Mary"); // Let everyone walk Walkable.letThemWalk(w); } }