«^»
12. Implementation inheritance

Often books on Java teach the following topics in one chapter:

These topics are taught in this order because it seems to be an obvious order: first introduce the advantages of deriving classes from base classes; then explain polymorphism (dynamic binding); the explain that an abstract class is a special form of base class; and finally introduce an interface as a special form of an abstract class. However, a chapter that has these topics introduces a lot of new ideas and explaining them all at once will overload the reader.

Although there is some logic to teaching interfaces in this way, it is better to make a clearer separation between implementation inheritance and interfaces. I think it is important to teach interfaces early, and to leave implementation inheritance until later.

Although the lectures on implementation inheritance appears late in this course, some of the basic ideas are introduced in earlier lectures:

It is only towards the end of this course that the students learn how to derive a class from one of their other classes. These lectures also introduce the idea of abstract classes.