I'm hesitant to say that extending ArrayList as ArrayListStack is the correct solution here because this would allow more access than a true Stack should allow. This isn't necessarily a bad thing, but you need more solid specifications before a good recommendation can be made.
In general, I would prefer a composition solution. Your stack implementation class would use an ArrayList internally for storing the stack state, but it would not be an ArrayList because an ArrayList provides RandomAccess which a stack shouldn't have.