我所理解的接口和抽象类
来源:互联网 发布:赎罪 长镜头 知乎 编辑:程序博客网 时间:2024/06/07 02:02
参考:http://www.cnblogs.com/huihui-gohay/archive/2009/12/13/1623070.html
在实践过程中,抽象类和接口都经常用到。但是,对于什么情况下该用抽象类,什么情况下该用接口,总是有点搞不清楚。
于是,在阅读别人对着两者理解之后,终于对两者的区别有了更进一步的理解。
有关这两者的一些基本区别,可以参考上面的文章。这里我只介绍下对于抽象和接口该在什么情况下使用的理解。
抽象类重点在于对于属性和方法的继承;而接口则重在多个类(可能他们之间毫无联系)对同一种方法或者属性的描述,体现了多态性。
抽象出一个类(类),定义一个抽象方法(判断是否会飞)
1、抽象类
例如:抽象出一个鸟类。对于鸟类,抽象出一个方法。用来判断这种鸟会不会飞。
由于鸟类中的canFly是抽象方法,因此所有继承鸟类的子类都必须实现这个canFly方法。
/** * 鸟 */public abstract class Bird {public abstract boolean canFly();}/** * 燕子 * */public class Swallow extends Bird{@Overridepublic boolean canFly() {// TODO Auto-generated method stubreturn false;}}/** * 猫头鹰 * */public class Owl extends Bird{@Overridepublic boolean canFly() {// TODO Auto-generated method stubreturn false;}}
假如现在有这种状况。要同时描述鸟类和飞机,它们可以有一个共同的方法来判断是否能飞。但是这个时候,两者肯定是没有继承关系的啦。
你不能指望飞机通过继承鸟类来获得这个canFly的方法。
此时,你就可以把canFly抽象到接口中,然后鸟类和飞机都继承这个接口。
2、接口
public interface IFly {public abstract boolean canFly();}/** * 鸟 */public class Bird implements IFly{@Overridepublic boolean canFly() {// TODO Auto-generated method stubreturn false;}}/** * 飞机 * */public class Airplane implements IFly {@Overridepublic boolean canFly() {// TODO Auto-generated method stubreturn true;}}
- 我所理解的接口和抽象类
- 我所理解的抽象类和抽象方法
- 我所理解的抽象
- 我所理解的抽象
- 我对抽象类和接口的理解
- 接口和抽象类的理解
- 接口和抽象类的理解
- 接口和抽象类的理解
- 接口和抽象类的理解1
- 接口和抽象类的理解2
- 接口和抽象类的理解3
- 接口和抽象类的理解
- 抽象类和接口的理解
- JAVA抽象类和接口的理解
- 理解Java的接口和抽象类
- java 抽象类和接口的理解
- 接口和抽象类的理解
- 对抽象类和接口的理解
- 堆排序
- .cpio.gz文件解压方法
- win7 IIS配置和ASP.NET的运行配
- Nginx源码分析(一)
- 学生信息管理系统————总结
- 我所理解的接口和抽象类
- 如何复制百度文库中的文章
- python中使用MySQLdb连接mysql
- iphone4开发基础教程的技术点总结3
- Win7系统Eclipse_Juno配置MinGW-get-inst-20120426搭建C/C++开发环境
- 中介者模式(Mediator Pattern)
- Apache Commons工具集简介[转载]
- ROM、SDRAM、RAM、DRAM、SRAM、FLASH的区别
- C++ map的基本操作和使用