In this chapter, we will dive deeper into contract programming with interfaces. We will have a better understanding of how interfaces work as types. We will:
Work with methods receiving interfaces as arguments
Downcast with interfaces and classes
Understand boxing and unboxing
Treat instances of an interface type as a different subclass
Take advantage of default methods in interfaces in Java 9