Interfaces
An interface is defined using the keyword interface
You can declare properties in interfaces. A property declared in an interface can either be abstract, or it can provide implementations for accessors. Properties declared in interfaces can’t have backing fields, and therefore accessors declared in interfaces can’t reference them.
When we declare many types in our supertype list, it may appear that we inherit more than one implementation of the same method. For example
However, if we derive D from A and B, we need to implement all the methods which we have inherited from multiple interfaces, and to specify how exactly D should implement them. This rule applies both to methods for which we’ve inherited a single implementation (bar()) and multiple implementations (foo()).