Las clases anónimas son clases a las que la persona que programa la clase no les asigna un nombre. Por lo general, se usan cuando no es necesario nombrar la clase, como cuando la clase no es más que un subconjunto requerido de otra superclase superior. La ventaja de programar clases anónimas es que le brindan al programador la oportunidad de simplificar su código, especialmente en los casos en que las clases anónimas encajarán en múltiples superclases. Una gran desventaja es que las clases anónimas no pueden definir constructores o convertirse en privadas, protegidas o estáticas, ya que la falta de un nombre elimina estas posibilidades.
En programación de computadoras, una clase es un objeto generalizado que puede aparecer en cualquier número de instancias específicas. Al igual que el término «avión» cubre ampliamente todos los tipos de aviones de un solo motor, aviones bimotores, aviones militares y naves de pasajeros, una «clase» en términos de computación es una instancia genérica de un objeto. No es más que una plantilla que se puede completar según sea necesario para adaptarse a las necesidades de los programadores o del usuario final. Por ejemplo, la creación de una clase llamada «bicicleta» probablemente incluiría los parámetros de una bicicleta; en otras palabras, el tamaño y tipo de neumático, el número de marchas, la marca y el modelo específicos de bicicleta, etc.
Los programadores suelen utilizar clases anónimas como subconjuntos de superclases, que son clases construidas a partir de múltiples clases propias. Continuando con el ejemplo anterior con la clase «bicicleta», una subclase anónima podría ser «neumáticos», que contiene información sobre el tamaño, la marca, etc. de los neumáticos.
La ventaja de hacer esto es que la clase anónima de «neumáticos» podría encajar igualmente bien en una superclase de «bicicletas» o en una superclase de «automóviles». Al crearlo como una clase anónima, el programador puede reutilizar más fácilmente su trabajo si es necesario. Esto ahorra tiempo y dinero, y hace que el código sea mucho más fácil de entender.
Una desventaja es que sin un nombre, las clases anónimas no pueden usar la misma funcionalidad que las clases con nombre. Por ejemplo, no pueden considerarse clases privadas, protegidas o restringidas. Además, no pueden utilizar constructores, que son subrutinas cuando aparece por primera vez la clase que inicializa la clase con los parámetros predeterminados. Esta falta de flexibilidad es la compensación natural por la simplicidad de una clase anónima.