Interfaces
Note the similarities between interfaces and abstract classes
Both define abstract methods that are given definitions by a particular class
Both can be used as generic type names for references
However, a class can implement multiple interfaces, but can only be derived from one class