Learning object-oriented programming
Removing repetitive code (overloading methods and constructors)
Primitive and reference variables
Objects and references