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.