2013-08-28 144 views
1

我在写一个将实现一个接口的类 - 接口中定义了一个方法。当我编写我的类定义并在类声明后面写上implements interfaceService并结束我的定义并关闭类的括号而不覆盖接口方法时。它编译得很好。没有编译错误,我可以在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

接口是抽象方法的集合。

抽象类可以有抽象方法。

你不需要需要在你的Abstract类中实现接口的方法,尽管你可以。

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

相关问题