Interfaces define a set of functionality that classes can implement; however, interfaces contain no implementation, except for static methods and static fields. An interface specifies a contract that a class implementing the interface must follow. Interfaces can contain static or virtual methods, static fields, properties, and events. All interface members must be public. Interfaces cannot define constructors. The runtime allows one interface to require that any class that implements it must also implement one or more other interfaces.
To simplify the definition of interfaces, some languages do not require interface characteristics to be applied explicitly because those characteristics already apply implicitly. For example, all interfaces are implicitly abstract, and every member of the interface is implicitly abstract.