Why is Preferences an abstract class rather than an interface?
It was felt that the ability to add new methods in an upward compatible fashion outweighed the disadvantage that Preferences can not be used as a “mixin (that is to say, arbitrary classes cannot also be made to serve as Preferences objects. Also, this obviates the need for a separate class for the static methods.