Olá Maurício, tudo bem ?
para te ajudar vou dividr a explicação
Conceito de Abstração
Abstração significa esconder os detalhes internos de implementação e mostrar apenas o que é necessário para quem vai usar.
Ou seja, quando usamos abstração, não precisamos entender como algo funciona por dentro. Isso deixa o código mais limpo, mais fácil de usar e menos propenso a erros.
ArrayList
Dizer que o ArrayList encapsula um array interno (esconde ele dentro da classe) significa dizer que ele oferece métodos como .add(), .remove(), .get(), etc., para manipular os dados.
Então, você não precisa lidar diretamente com o array e com problemas como redimensionamento, controle de índice manual, entre outros.
Ele também abstrai o funcionamento interno: você não precisa saber como ele organiza os dados por dentro, só precisa saber como usá-lo.
Conclusão
Logo dizer que o arrayList abstrai, signfica dizer que ele está escondendo e implementando o funcionamento de um Array, classe Array. E está deixando visível apenas como usar a funcionalidade.
É como dirigir um carro. Exemplo: a ferraro abstrai as funções do carro e você não precisa saber como uma ferrari funciona, apenas precisa saber ligar o carro e que ele vai de 0 a 100 em segundos !!!
Espero ter ajudado!
Se for o caso pode marcar essa resposta como solução do tópico!