Java抽象类与接口的区别
来源:互联网 发布:阮一峰博客 js面向对象 编辑:程序博客网 时间:2024/05/29 06:58
原文:http://www.importnew.com/12399.html
一、抽象类和接口各自的特性
抽象类
抽象类是用来捕捉子类的通用特性的。不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
以JDK中的GenericServlet类为例:
public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { // abstract method abstract void service(ServletRequest req, ServletResponse res); void init() { // Its implementation } // other method related to Servlet}
当HttpServlet类继承GenericServlet时,它提供了service方法的实现:
public class HttpServlet extends GenericServlet { void service(ServletRequest req, ServletResponse res) { // implementation } protected void doGet(HttpServletRequest req, HttpServletResponse resp) { // Implementation } protected void doPost(HttpServletRequest req, HttpServletResponse resp) { // Implementation } // some other methods related to HttpServlet}
接口
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承这个接口的抽象方法。这就像是契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不做任何事情。
以Externalizable接口为例:
public interface Externalizable extends Serializable { void writeExternal(ObjectOutput out) throws IOException; void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;}
当你实现这个接口的时候,你就需要实现上面的两个方法:
public class Employee implements Externalizable { int employeeId; String employeeName; @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { employeeId = in.readInt(); employeeName = (String) in.readObject(); } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(employeeId); out.writeObject(employeeName); }}
抽象类和接口的对比
什么时候使用抽象类和接口
- 如果你拥有一些方法并且想让它们中的一些有默认的实现,则可以使用抽象类
- 如果你想实现多重继承,那么就要使用接口。由于Java不支持多重继承,子类不能继承多个类,但是可以实现多个接口
- 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现该接口的类。
阅读全文
0 0
- 抽象类与接口的区别 - [ Java 接口 抽象类 ]
- java接口与抽象类的区别
- java 抽象类与接口的区别
- java 抽象类与接口的区别
- Java抽象类与接口的区别
- java 抽象类与接口的区别
- java 抽象类与接口的区别
- java接口与抽象类的区别
- java抽象类与接口的区别
- java 接口与抽象类的区别
- java接口与抽象类的区别
- JAVA 抽象类与接口的区别
- java抽象类与接口的区别
- java抽象类与接口的区别
- Java抽象类与接口的区别
- java 抽象类与接口的区别
- Java抽象类与接口的区别
- Java抽象类与接口的区别
- [系分] 顺序图
- android AppCompat, splash启动白屏(黑屏)全屏,去掉状态栏,以及splash与虚拟按键遮挡
- scrollview嵌套listview
- Struts2和Spring进行整合
- Qt进程间通信
- Java抽象类与接口的区别
- web前端之Javascript的this用法
- 【git】1.git简介及安装
- ImageLoad+RollViewPage+Jsoup+WebView带你轻松实现抓取网页数据(附源码)
- Problem B: 一切皆对象
- UVA1368解题报告
- hdu 1035 robot motion
- Kotlin编程之泛型
- 滚动条