abstract class 和 interface 的区别
2013-11-06 14:37
369 查看
1、interface中只能包含静态常量和抽象方法,且静态常量是public final static 的,抽象方法是 public abstract 的。
2、abstract class 除了能包含 interface 所能包含的东西外,还能包含具体类能包含的任何东西。
3、抽象类可以实现接口,抽象类可以继承抽象类,抽象类可以继承具体类,接口可以继承接口。
4、接口主要用于系统框架的设计,用来定义模块直接的通信接口。而抽象类可以用来实现代码重用。设计模式中的模版方法模式就利用了抽象类。假如在项目中有多个Servlet中都要进行权限判断、日志记录等相同操作,就可以顶一个抽象类,在抽象类中就可以采用模版方法模式定义一个具体方法,在该具体方法中实现这个相同操作,同时定义一个抽象方法以供子类实现自己特有的操作。伪代码如下:
这里如果用接口就不能实现了。
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; }
这里如果用接口就不能实现了。
相关文章推荐
- fastjson处理接口时的一个问题
- c#中的interface abstract与virtual介绍
- 领悟php接口中interface存在的意义
- LINUX6不能启动,bringing up interface eth0:
- Cisco路由器交换机配置命令大全
- ObjC: 使用KVC
- cisco交换机 配置一组端口,interface range
- JAVA的Interface观念与C++多重继承的比较
- 淺談Interface
- 归纳Java中的Interface(接口)
- epoll_create, epoll_ctl和epoll_wait 实例讲解,总结得不错
- Block Object
- switch命令大全
- IOS 四种保存数据的方式
- 流操作
- 接口与抽象类的区别
- interface abstract class
- java中abstract,interface,final,static的总结,加深理解
- Interfaces
- Effective C# Rule number 1