Pour info, il est très rare qu'on ait besoin d'étendre ArrayList. En général, c'est une mauvaise idée, car c'est seulement de la fainéantise : il vaut mieux implémenter List (ou étendre AbstractList) si ta classe est, du point de vue logique, une liste (ce qui n'a de sens que si tu définis un nouveau type collection de type liste) et avoir un attribut privé de type List, que tu initialises par un "new ArrayList()".
Et si ta classe n'est pas un nouveau type de collection-liste, alors c'est encore plus une mauvaise idée de la faire hériter de ArrayList.
En plus, par cette méthode, tu verras que tu n'auras plus aucun souci pour copier une liste dans une autre...