我正在编写一个要实现接口的类 - 接口中定义了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 :(得分: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();
}