The goal of this week is to focus on the class hierarchy as a whole. You will learn to depict inheritance hierarchies and to explain to role of an interface as a part of the hierarchy. After this week you understand how abstract base classes and interface classes differ from each other and what is their role in object oriented software design. You can also use interfaces and abstract base classes as a part of a Java program. During the week you will also get to know the basics of multiple inheritance and are able to explain its basic idea.
Polymorphism enables handling subclass objects as objects of their baseclass. This creates situations where it makes no sense to provide a full implementation to the common base class: objects will never be created out of it in the program. These kind of classes are intended only for the inheritance hierarchy: they act only as base classes to the contrete classes. These classes are called abstract base classes.