Como regla general, objetos deben ser diseñados para una sola responsabilidad (altamente cohesivo ). En otras palabras, cualquier objeto diseñado así, se debe realizar una sola tarea coherente. Esto se consideraría la mejor práctica para el diseño orientado a objetos.
A veces, sin embargo, un desarrollador puede diseñar una clase que requiere una clase separada especializada con el fin de trabajar.Esta clase especializada se podría considerar una clase de ayuda .
Si la clase ayudante se no utilizado por ninguna otra clase, entonces sería considerado un primer candidato como una clase interior
Como provocada por ncmathsadist anteriormente, un el ejemplo del uso de clase interna estaría en la implementación de Manejadores de eventos.
Por ejemplo, en el diseño de una interfaz gráfica de usuario (GUI), un desarrollador ha creado un botón que realiza una tarea en particular después de que el usuario presiona la misma.
El botón necesitaría un manejador de eventos el que escucha para cuando se pulsa ese botón en particular.
En este caso, creando el controlador de eventos para el botón como una clase interna habría mejores prácticas como la clase interna no se utiliza en ningún otro lugar que no sea con el botón específica dentro de la clase de interfaz gráfica de usuario.
mira esto: http://stackoverflow.com/questions/2284396/java-anonymous-or-not-inner-classes-is-it-good-to-use-them – Gamb