I'd prefer that we use composition instead of inheritance.

If I read correctly your code, you're using only:
* `length` to empty the list => provide an `empty` function to do that
* `push` that you redefine anyway
* `map` to get all the numbers => provide a `getNumbers` function to do that

=> better encapsulation