Interface is a contract between the interface and the cl*** which implements it. Interface defines the what part of the contract and the cl*** define the how part of the contract. Interface is declared using the interface keyword. It is used to support multiple inheritance and provides 100% abstraction.