2013-08-28 9 views
1

Я пишу класс, который собирается реализовать интерфейс - интерфейс имеет 1 метод, определенный в нем. Когда я пишу свое определение класса и записываю после объявления класса и заканчиваю свое определение и закрываю скобки класса БЕЗ переопределения метода интерфейса. Он компилируется просто отлично. Ошибка компиляции, и я могу сохранить класс реализации в Eclipse. Почему так? Не следует ли принудительно переопределить метод реализации класса? Вот определения интерфейса и реализации класса:Абстрактный класс, реализующий интерфейс, не требует реализации метода. Зачем?

Интерфейс:

public interface interfaceService{ 
    List<Map<String, Object>> doSearch(SearchVo formVo,String indexName,String type) 
      throws SearchException; 
    long getTotalHitCount(); 
} 

Класс:

public abstract class ClientFlagSearch implements SearchService{ 

} 

У меня есть ощущение, что это имеет отношение к определению, реализующий класс как абстрактный. Зачем?

+0

Любой класс, который расширяет свой абстрактный класс, должен будет реализовать методы интерфейса – Cruncher

ответ

6

Не следует ли принудительно переопределить метод реализации класса реализации?

Нет, класс abstract не должен реализовывать каждый метод интерфейса. Те методы, которые вы решили не реализовать, остаются abstract и должны быть реализованы дальше по дереву наследования.

Если ClientFlagSearch не были abstract, это действительно необходимо реализовать каждый метод SearchService.

0

Интерфейс представляет собой набор абстрактных методов.

Аннотация Класс может иметь абстрактные методы.

Вам не нужно , чтобы реализовать методы интерфейса в вашем абстрактном классе, хотя вы можете.

1

Правило абстрактный метод должен быть реализован в первом конкретном классе

  • abstract класса не должен реализовывать abstract метод
  • абстрактных классов могут иметь абстрактные методы.
+1

должны быть не !, ** ДОЛЖНЫ БЫТЬ ** – nachokk

+0

@nachokk Слушаюсь, сэр , –

0

Абстрактные классы не должны ничего внедрять. Это работает так же, как это было бы, если бы вы письменное

public abstract class ClientFlagSearch { 
    List<Map<String, Object>> doSearch(SearchVo formVo,String indexName,String type) 
      throws SearchException; 
    long getTotalHitCount(); 
} 
+0

все -> все – eis

+0

Ну, да. Изменено. – Mattsjo

Смежные вопросы