An object can have multiple types: the type of its own class and the types of all the interfaces that the class implements . This means that if a variable is declared to be the type of an interface, then its value can reference any object that is instantiated from any class that implements the interface.
Read more