Tutorial Notes:
Abstract method: a method that the implementation is implemented by its subclass.
Constructor: method that initialize a class.
Overloading: same name method but have different parameters (signature).