实现接口的抽象类不需要方法实现。为什么?

时间:2013-08-28 13:54:10

标签: java

我正在编写一个要实现接口的类 - 接口中定义了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{

}

我有一种感觉,这与将实现类定义为抽象有关。为什么呢?

5 个答案:

答案 0 :(得分:6)

  

不应该强制实现类覆盖方法吗?

不,abstract类不必实现接口的每个方法。您选择不实现的那些方法仍然是abstract,必须在继承树中进一步实现。

如果ClientFlagSearch不是abstract,则确实必须实施SearchService的每种方法。

答案 1 :(得分:1)

规则是抽象方法必须在第一个具体类

中实现
  • abstract课程不必实施abstract方法
  • 抽象类可以有抽象方法。

答案 2 :(得分:0)

接口是抽象方法的集合。

抽象类可以有抽象方法。

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

答案 3 :(得分:0)

来自http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

  

但是,可以定义一个不实现所有接口方法的类,前提是该类声明为抽象。

答案 4 :(得分:0)

抽象类不必实现任何东西。这与你写的方式相同

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