Abstract class and interface are almost similar except some key differences – Interface is not class, it
and all its declared methods are public by default (need not mention public explicitly), methods are
only declared in interface and never defined. All variables defined in interface are final and static by
default.
It is imperative that a concrete class implementing the interface defines all its methods else the class
implementing the interface will become abstract class by default.
Since interface variables are static they can be directly referred by interface.
Interfaces can only be provided as reference for an object variable, they cannot be object of
interface type. Objects are created only for class type.
Interface to interface extension. Interface cannot implement but extend another interface.