Understanding Inheritance To Enhance Code Reusability