Inheritance
•  Defines a IS-A relationship between classes.
•  Base classes and derived classes.
•  Derived class inherits all fields and methods of base class.
•  Derived class objects are type compatible with base class.
•  protected fields and methods: visible to derived classes and to
   classes in same package.
•  inheritance is transitive.
•  polymorphism allows for redefining fields and methods.
•  dynamic binding allows for run-time determination of
   overloads and/or overrides.
•  super() is a way to refer to constructor of base class.
   It can also be called  using appropriate parameters.
   It can only be the first line of a constructor.
•  super with appropriate parameters is also used to
   invoke the corresponding method of the base class.