Hola, aunque tu código funcione te recomendaría que cambiaras o mejoraras algunas cosas:
En la clase TestListCantantesFamosos defines atributos y un constructor. Mejor no hacerlo así, sino simplemente dejarla con el método main. Esta clase sirve para conducir el programa, por tanto no tiene mucho sentido que contenga datos ni constructores.
El comienzo de esta clase podría ser algo así:
public static void main(String[] args) {
ListaCantantesFamosos lista1 = new ListCantantesFamosos();
Y a partir de ahí empezar a trabajar...
Otra cosa: en la clase TestListCantantesFamosos declaras private void mostrarCantantesIt() y addCantanteTeclado()
Hay cosas mal planteadas: ¿mostrarCantantesIt() es un método para mostrar cantantes de una lista? Entonces este método debe estar en la clase ListCantantesFamosos. Cada clase se ocupa de sus cosas.
El método addCantanteTeclado() lo mismo: si es un método para añadir un teclado a una lista debe ir en la clase de lista, no en otra clase.
Todo esto nos resume que un código puede funcionar pero no podremos decir que está bien diseñado si no se siguen las pautas de la programación orientada a objetos.
Saludos!!!