Interfaces
An interface name can be used as a generic reference type name
A reference to any object of any class that implements that interface is compatible with that type
For example, if Philosopher is the name of an interface, it can be used as the type of a parameter to a method
An object of any class that implements Philosopher can be passed to that method