Fala Everson, tudo certo?
Na aula o Paulo sugere que utilizemos a instrução
List<?> aulas = new ArrayList<>()
como uma boa prática de polimorfismo. Não há nada de errado com a utilização de
ArrayList<?> aulas = new ArrayList<>();
pois o código ainda instancia uma ArrayList e nos deixa utilizar com todas suas funcionalidades.
A ideia por traz da declaração polimórfica da List é que em algumas situações é benéfico usar a ArrayList, em outras é melhor usar a LinkedList e nem sempre é claro a primeiro momento qual lista devemos utilizar no nosso código. Quando declaramos sem condicionar a variável ou atributo à uma lista específica, isso nos permite que façamos essa troca, mudando apenas uma palavra no código, e sem alterar seu comportamento, apenas aumentando a sua performance baseado no tipo de lista escolhido!
Com o tempo e experiência, acaba as vezes ficando até mais direto saber qual tipo de lista usar, e nesses casos de certeza sobre qual tipo usar, não há problema nenhum em fazer da segunda maneira, ainda assim é uma boa prática manter a declaração como no primeiro exemplo pois facilita a manutenção do código e diminui o acoplamento!
Em caso de dúvidas, estou por aqui.
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!