1

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

}

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

4

5 回答 5

6

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

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

如果ClientFlagSearch不是abstract,它确实必须实现每个方法SearchService

于 2013-08-28T13:55:49.230 回答
1

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

  • abstract类不必实现abstract方法
  • 抽象类可以有抽象方法。
于 2013-08-28T13:56:11.840 回答
0

接口是抽象方法的集合。

抽象类可以有抽象方法。

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

于 2013-08-28T13:55:55.737 回答
0

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

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

于 2013-08-28T13:56:04.677 回答
0

抽象类不必实现任何东西。这和你写的一样

public abstract class ClientFlagSearch {
    List<Map<String, Object>> doSearch(SearchVo formVo,String indexName,String type)
            throws SearchException;
    long getTotalHitCount();
}
于 2013-08-28T13:56:21.643 回答