1、interface中只能包含静态常量和抽象方法,且静态常量是public final static 的,抽象方法是 public abstract 的。
2、abstract class 除了能包含 interface 所能包含的东西外,还能包含具体类能包含的任何东西。
3、抽象类可以实现接口,抽象类可以继承抽象类,抽象类可以继承具体类,接口可以继承接口。
4、接口主要用于系统框架的设计,用来定义模块直接的通信接口。而抽象类可以用来实现代码重用。设计模式中的模版方法模式就利用了抽象类。假如在项目中有多个Servlet中都要进行权限判断、日志记录等相同操作,就可以顶一个抽象类,在抽象类中就可以采用模版方法模式定义一个具体方法,在该具体方法中实现这个相同操作,同时定义一个抽象方法以供子类实现自己特有的操作。伪代码如下:
public abstract class BaseServlet extends HttpServlet{
protected final void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
日志记录;
权限判断
if(有权限){
doService(request,response);
}else{
//提示权限不足
}
}
protected abstract void doService(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException;
}
这里如果用接口就不能实现了。