02 JAVA 对象补充 抽象VS接口
来源:互联网 发布:mac qq接受文件没反应 编辑:程序博客网 时间:2024/06/04 01:10
接口和抽象怎么听起来那么像呢?都是只定义方法而不实现,而且抽象可以继承抽象,接口可以继承接口,到底哪里不同啦?其实我也不知道,我就随便乱写写~
- 抽象方法(是不是)
1. 复习一下动态继承,动态继承就是我们希望面对某类的不同的子类的时候,执行环境可以很智能的调用不同的方法,比如Aminal类的Cat子类,我们调用“喵喵喵”叫方法,而如果是狗子类时,我们调用“汪汪汪”叫方法,此时我们根本不需要实现Aminal类中的叫方法,因为根据动物种类的不同,叫法也不是不同的,此时就可以用abstract抽象类。所以,抽象类作为父类,提供子类可以拥有的属性和功能;当然我们也可以根据一组共同的行为来定义一个抽象类;抽象类只能是单继承
2. 抽象方法必须是public或者protected的,缺省情况默认为public,不能使private,这样的话,子类就不能继承实现抽象方法啦,抽象类不能创建实例,抽象类中可以没有抽象方法
3. 想要修改所有子类默认特性的时候,只需要修改抽象父类,所以便于管理
- 接口(有没有)
1. 接口主要是提供行为的抽象,比如呼吸接口,对于人类,植物类和真菌类都可以实现自己的呼吸方式,再比如思考接口,人类可以实现。接口可以实现多继承,接口类不能创建实例
2. 所有方法都是抽象的,所有属性和方法都是public的
例1:飞机和鸟是不同的种类,他们之间的相同特点是都会飞,此时我们可以采用接口飞;男人,女人,ambisexulity都是人类,它们同时拥有相同的方法和属性,此时我们构建一个抽象的人类
例2:对于Door概念,具有两个动作open和close,此时我们可以使用抽象或者接口来描述这个概念,此时我们想要让这个门拥有alarm功能
因为open和close是Door本身具有的功能,alarm则不一定,有些门可能并不能alarm,此时我们可以定义两个抽象类或两个接口,或一个抽象类和一个接口,怎么选呢?
- 两个抽象类不可行,因为抽象类不支持多继承,alarmDoor要继承两个类是不可能的
- 两个接口的话,其实不合理,因为open和close是所有门都具有的特性,也可以说是门类拥有的方法
- 门抽象类+alarm接口刚刚号
Reference:
1. http://www.cnblogs.com/dolphin0520/p/3811437.html
2. http://www.cnblogs.com/azai/archive/2009/11/10/1599584.html
- 02 JAVA 对象补充 抽象VS接口
- Java 抽象类 vs 接口
- java 面向对象 接口 抽象
- 抽象类 vs 接口(Java)
- 【java学习笔记】接口VS抽象类
- 【java基础补充】java接口、工厂模式和抽象类
- 接口 vs 抽象类
- 抽象类 vs 接口
- 接口VS抽象类
- 抽象类vs接口
- 抽象类 VS 接口
- 抽象类VS接口
- 抽象类VS接口
- 抽象类VS接口
- 抽象类VS接口
- 抽象类 VS 接口
- 接口 vs 抽象类
- java面向对象思想之接口、抽象
- STM32CUBE——6
- flask-SQLAlchemy一些使用技巧(关联关系的创建)
- VPN step by step
- 求二叉树中节点的最大距离
- 关系表达式的使用
- 02 JAVA 对象补充 抽象VS接口
- IOS开发中的委托模式
- 集合工具类
- Properties
- ShadowSocks 代理设置,超有用!
- 虚拟桌面
- [Elasticsearch] 向已存在的索引中添加自定义filter/analyzer
- 正则表达式去除粘贴代码行号
- 【思路题】【多校第一场】【1001.OO’s Sequence】