We tour the standard library, looking at a few important class and interface hierarchies

Object

Overloading and overriding

Overloading a method is creating a separate method with the same name but different argument types. Overloaded methods are unrelated to each other. You can think of the argument types as part of the method name.

Overriding a method is reimplementing a method in a subtype (with the same name and arguments).

We did an extensive demo with overloading and overriding. See the notes in the demo code.

Designing a collection: Generics

Collection

Collection<?>

Collection<? extends Animal>

The Collections framework

Take a look at the following types: