Em
Animal animal = new Gato()
O tipo da variável animal é Gato, pois houve uma conversão implícita entre classe base/ classe filha como visto na aula passada. Logo em
Gato gato = animal
Ambos tipos são o mesmo, e essa linha nem se trataria de uma conversão, mas uma atribuição de duas variáveis com mesmo tipo, não?