Polymorphism
Interface variable holds reference to object of a class that implements the interface
Measurable x;
x = new BankAccount(10000);
x = new Coin(0.1, "dime");
Note that the object to which x refers doesn't have type Measurable; the type of the object is some class that implements the Measurable interface
You can call any of the interface methods:
double m = x.getMeasure();
Which method is called?
Depends on the actual object
If x refers to a bank account, calls BankAccount.getMeasure
If x refers to a coin, calls Coin.getMeasure

Polymorphism (many shapes): Behavior can vary depending on the actual type of an object
Called late binding: resolved at runtime
Different from overloading; overloading is resolved by the compiler (early binding)
Why is it impossible to construct a Measurable object?
Answer:
Measurable
is an interface. Interfaces have no fields
and no method implementations.
Why can you nevertheless declare a variable whose type is Measurable?
Answer:
That variable never refers to a Measurable object. It
refers to an object of some class – a class that implements the
Measurable interface.
What do overloading and polymorphism have in common? Where do they differ?
Answer:
Both describe a situation where one method name can
denote multiple methods. However, overloading is resolved
early by the compiler, by looking at the types of the parameter
variables. Polymorphism is resolved late, by looking at the type
of the implicit parameter object just before making the call.