Мой вопрос заключается в том, должен ли интерфейс, который неявно реализован путем расширения класса, который его уже реализует, быть явно реализован классом, если класс хочет сообщить о том, что он выполняет контракт этого интерфейса.
Например, если вы хотите написать класс, который выполняет контракт интерфейса java.util.List
. Вы реализуете это, расширяя класс java.util.AbstractList
, который уже реализует интерфейс List
. Вы прямо заявляете, что реализуете List?
public class MyList extends AbstractList implements List
Или вы сохраняете набор текста неявным способом?
public class MyList extends AbstractList
Какой способ считается лучшим стилем? Какие причины вы предпочитаете так или иначе? В каких ситуациях вы бы предпочли способ 1 или 2?