Interface 和 Abstract Class 的区别
来源:互联网 发布:京东数据罗盘在哪里 编辑:程序博客网 时间:2024/03/28 16:20
在OO中,Interface 和Abstract Class 是两个不同的概念。
1。Abstract Class类似于 Abstract Data Type(抽象数据类型),它定义了它所有的subclass(子类)应该有的特性,就是在Abstract Class 中声明方法和变量。如定义一种抽象类型:车。那么在Java中,就要在class或method上加上 abstract。举个例:
public abstract class 车 { public int 轮子; public abstract void 移动(); } 这个抽象类就声明了所有的车应有的特征(如轮子)和行为(如移动)。之后你就可以扩展(extend)这个抽象类,只要是车,就可以,还有你可以在子类(subclass)中加入自己的特征,如 public class 跑车 extends 车 { public void 移动() { System.out.println("我在移动"); } public void 引擎类型() //属于自己(跑车)的行为 { System.out.println("高级引擎"); } 轮子=4; }
public class 自行车 extends 车 { public void 移动() { System.out.println("我在移动"); } public void 爆胎() //属于自己(自行车)的行为 { System.out.println("我走不动了"); } 轮子=2; }
2。Interface 则用来定义一个协议,所有的方法都可以实现它。一个Interface定义了方法,和最终静态(final static)变量,所有实现这个Interface的都要保证实现的东西与这个Interface 定义的行为一致。使用Interface可以让Object(对象)在一定的规范下沟通。
如 public interface TCP协议 { public void 打开端口(); public void 关闭端口(); } 这样的话,只要实现这个Interface的都可以使用这两个方法交流。
在 Java平台里,它们主要有3个不同点: 1。一个类(Class)只能继承一个超类(Super class),但是可以实现多个Interface。 2。在Abstract Class内,你可以有不抽象(Abstract)的方法,即有意义的方法,但Interface不行。 如 public abstract class 车 { public int 轮子; public abstract void 移动(); public String 我是什么() { return "车子"; } } 3。Interface不属于 继承范围。即不可能成为超类(Super Class) (完)
这篇文章是根据Sun的FAQ中http://access1.sun.com/FAQSets/newtojavatechfaq.html 的Q13 翻译得来。
- abstract class和interface的区别
- abstract class和interface的区别
- Interface和Abstract Class的区别
- Interface 和 Abstract Class 的区别
- abstract class和interface的区别
- abstract class和interface的区别
- Interface 和 Abstract Class 的区别
- abstract class和 interface的区别
- abstract class 和 interface的区别
- 转帖-abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- abstract class和interface的区别
- 鼠标一定要在桌上? 日本发明随手鼠标
- ASP.net with C#学习个人谈
- 【原创】远程管理linux系统---ssh服务
- 有钱未必买得到!五大怪异笔记本
- Swing中JTable使用小结
- Interface 和 Abstract Class 的区别
- 为鼠标移动事件添加新的功能-让菜单决定是否显示
- IBM Power6抛弃传统二进制 使用十进制数字
- 经济学十大原理
- 对操作系统的比喻
- 我是一个黑客4__我攻破了美军海军网站(3)
- 新闻聚类系统---news.baidu.com
- 编程文档中心-Struts开发实例-struts开发工具
- 晚上参加了朋友的婚礼