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;
}
這裡如果用接口就不能實作了。