Abstract interfaces are inexplicably disallowed

10th February 2002

Consider the Query interface. It exists only for one reason: so that we can derive the PrefixQuery and CCLQuery subinterfaces from it. Implementations are supposed to implement the PrefixQuery and CCLQuery interfaces, but not the Query class directly.

Now when we have a class that's not supposed to be instantiated directly, but only used as a base from which other classes can be derived (so that those classes can be instantiated), we can express this by marking the base class as abstract. But we can't express the equivalent notion for interfaces: Jikes 1.11 (IBM's open-source Java compiler) complains when it sees abstract interface:

	Every interface in implicitly abstract.  This modifier
	is obsolete and should not be used in new Java programs.
  

What a missed opportunity.

Feedback to <mike@indexdata.com> is welcome!