Today we’ll explore how object-oriented programming (OOP) in Java uses class hierarchies, inheritance (via extends), and interface implementation (via implements).

We’ll be modeling musical instruments using Java’s OOP facilities. To make things fun, we’ll leave the details up to you, but here’s the general idea.

Your CAs will guide you through the process of thinking about these things, but the general process will be:

  1. Think about how to structure a class hierarchy (with inheritance, using extends) for describing the instruments you choose. First, just draw it on paper… then, after talking with other students in small groups, try to write it in Java.
  2. Think about how to _re_structure your class hierarchy to use less inheritance with extends and more interface implementation with implements. What changes about your hierarchy? What interfaces are useful?