Method Overloading and Inheritance are covered in this unit. Key points include:
1. Method overloading allows methods to have the same name but different parameters. It can be done by changing number or type of parameters.
2. Constructor overloading allows multiple constructors with different parameters. Default, parameterized, and copy constructors are examples.
3. Objects can be passed as parameters to methods and constructors to allow operation on object data.
4. Methods can return objects to allow chaining of operations or passing returned objects to other methods.
5. Recursion allows methods to call themselves, making code more compact. The factorial example demonstrates this.