Interfaces
By using the keyword interface, you could fully abstract a class' interface from its implementations. Which is using interface, you could specify what a class must do, but not how it does it. An Interface is syntactically same to classes, other than they lack instance variables and their functions are declared without any body. Within practice, this means that you could define interfaces that don't make assumptions about how they are implemented. At one time it is defined; any number of classes could implement an interface. Also one class could implement any number of interfaces.
For implement an interface, a class has to be creating the fully set of functions defined through the interface. Moreover, every class is free to determine the details of its own implementation. Through giving the interface keyword Java language permits you to fully utilize the "one interface with multiple methods" aspect of polymorphism.
Interfaces are designed to support dynamic method resolution at the run time. Generally, in sequence for a method to be known as from one class to another, both classes required to be present at compile time so the Java compiler could check to ensure in which the method signatures are compatible. This need by itself makes for a static and non extensible classing environment. A Inevitably in a system such as this functionality gets pushed up higher and higher in the class hierarchy so that the mechanisms will be available to more and more subclasses. Interfaces are designed to prevent this problem. They disconnect the definition of a function or set of functions from the inheritance hierarchy. Because interfaces are in various hierarchy form classes, it is probable for classes which neither is nor related in terms of the class hierarchy to implement the similar interface. This is where the real power of interfaces is realized.