您的位置:首页 > 其它

abstract class 和 interface 的区别

2013-11-06 14:37 369 查看
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;
}

这里如果用接口就不能实现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息