Polimorfismo de Java que crea un objeto de subclase usando su variable superclase

Así que soy un estudiante y en el proceso de aprender Java. Hay un concepto que me está costando entender y espero que alguien pueda arrojar algo de luz sobre esto por mí. Mi pregunta es sobre el polimorfismo. Digamos por ejemplo que tengo el siguiente código.

Animal a = new Lizard("Lizzy", 6);  //Lizard extends Animal

Por lo que entiendo, ya que el tipo variable es Animal, tendrá todas las características de un Animal. Pero, como el objeto creado es un lagarto, se utilizarán todos los métodos anulados en la clase Lagarto en lugar de los de la clase Animal. Es esto correcto>

Además, ¿qué clases de constructor se utilizarán al crear un?

Gracias por cualquier ayuda. He mirado bastante

Respuestas a la pregunta(3)

Su respuesta a la pregunta