Должен ли интерфейс, унаследованный от базового класса, быть явно реализован в подклассе? - PullRequest
13 голосов
/ 12 декабря 2008

Мой вопрос заключается в том, должен ли интерфейс, который неявно реализован путем расширения класса, который его уже реализует, быть явно реализован классом, если класс хочет сообщить о том, что он выполняет контракт этого интерфейса.

Например, если вы хотите написать класс, который выполняет контракт интерфейса java.util.List. Вы реализуете это, расширяя класс java.util.AbstractList, который уже реализует интерфейс List. Вы прямо заявляете, что реализуете List?

public class MyList extends AbstractList implements List

Или вы сохраняете набор текста неявным способом?

public class MyList extends AbstractList

Какой способ считается лучшим стилем? Какие причины вы предпочитаете так или иначе? В каких ситуациях вы бы предпочли способ 1 или 2?

Ответы [ 11 ]

0 голосов
/ 12 декабря 2008

Когда вы расширяете AbstractList, MyList уже имеет тип List, поэтому нет необходимости подробно описывать (или реализовывать) интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...