Because all methods declared in an interface are abstract, each class that implements an interface must declare bodies for the methods of the interface. There can be no sharing of code between derived classes. Classes implementing an interface must duplicate any common code. Interfaces cannot directly model classes because they do not allow field variables. An interface may declare static final variables, but those are effectively constants , not variables.
Abstract classes can declare field variables.
Interfaces, on the other hand, can only support variables indirectly. Interfaces emulate field variables using wrapper methods for getting and setting the variables. Classes implementing an interface must include duplicate versions of the variable wrappers. The Linked class provides a base class for a general linked list. Classes that require cleanup after all access is complete should use explicit destructor methods.