Course: Berkeley’s CS 61B: Data Structures.
Lab 5: Practice with Java Inheritance and Java Interfaces
Unlike the previous 4 labs (which IMHO were trivial) this one’s a bit more interesting in that it makes you take a closer look on how exactly inheritance works in Java. You get to poke around and see what you can do and what you can’t do in the relationship between a class, a superclass and an interface.
I decided to just use a different package (folder) for each part of the problem to keep things simple and separate. At a few places, I went a bit beyond the requirements of the lab specs, just to satisfy my curiosity.
Remarks/explanations and answers to the questions are in the sources as comments.