functional interface

A functional interface is an interface that contains exactly one abstract method. Normally, this method specifies the intended purpose of the interface. Thus, a functional interface typically represents a single action. For example, the standard Java interface Runnable is a functional interface because it defines only one method: run( ). Therefore, run( ) defines the action of Runnable. 
* Default methods have an implementation; they are not abstract.
* If an interface declares an abstract method overriding one of the public methods of java.lang.Object, that also does not count toward the interface abstract method count since any implementation of the interface will have an implementation from java.lang.Object or elsewhere.