When I was seeing the declaration of ArrayList
ArrayList
class ArrayList extends AbstractList implements List, RandomAccess
Well, this way you must implement List methods when you create a subclass to AbstractList, and you can also use an ArrayList as an AbstractList.
List
AbstractList