Что он означает, так это то, что вы должны обеспечить интерфейс и абстрактный класс, реализующие части этого интерфейса:
public interface Foo {
void bar();
void baz();
}
private abstract class AbstractFoo implements Foo {
...
}
AbstractFoo
класса может даже не быть абстрактным, если это возможно, чтобы обеспечить основную, полную реализацию. Но если вам нужен класс, который является Foo, но не может расширять AbstractFoo, он по-прежнему возможен с интерфейсом. Абстрактный класс не предоставляет эту возможность, поскольку вы можете расширить только один класс.
Кстати, это то, что делается в рамках коллекций (который создал Josh Bloch): интерфейс Set
реализуется AbstractSet
, интерфейс List
осуществляется AbstractList
и т.д.
Для интерфейса _every_? Не могли бы вы указать ссылку на эту ссылку? – Puce