Inner classes are used to develop a more readable and maintainable code because they logically group classes and interfaces in one place . Easy access, as the inner object, is implicitly available inside an outer Code optimization requires less code to write. It can avoid having a separate class.