In the first approach, the programmer creating a linked list abstraction creates a generic link class, which is independent of any application.
To use this class, the programmer creating a list must then subclass from the link class, creating values that will hold the specific type of element needed by the application.