Просто простой вопрос синтаксиса. Предположим, у нас есть интерфейс, который мы будем называть IMyClass
и абстрактный класс, который реализует, который мы будем называть AbstractMyClass
и объявляется следующим образом:Вопрос синтаксиса - расширение абстрактных классов, реализующих интерфейс
public abstract class AbstractMyClass implements IMyClass {
}
Теперь, когда мы создаем конкретную реализацию MyClass, который мы будем называть .. .! MyClass
, есть два способа, которыми мы можем объявить его:
public class MyClass extends AbstractMyClass {
}
и
public class MyClass extends AbstractMyClass implements IMyClass {
}
Что лучше здесь? Я предполагаю, что ответ на этот вопрос - это только вопрос предпочтения, а просто хотел услышать некоторые мысли по этому поводу.
Заранее благодарен,
Joseph.
Обратите внимание, что Джош Блох сказал (не помню, где я видел это, извините), что в таких случаях, как 'HashMap' там, он Безразлично» Думаю, что 'implements Map' добавляет много, и он оставил бы это, если бы он делал это снова. –
ColinD
Должен ли он снова это сделать? Что произойдет, если в следующем выпуске JDK будет сброшено предложение «implements»? Он все равно будет двоичным и исходным, совместимым (поскольку в любом случае подразумевается «инвентарь»), правильно? – Thilo
Является ли явный «реализует» более быстрые вызовы 'instanceof'? – Thilo