Java技术——Interface与abstract类的区别
来源:互联网 发布:小博士隔音膜 淘宝网 编辑:程序博客网 时间:2024/06/01 10:04
0. 前言
抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在对多态提供了非常好的支持。他们两者有很大的相似,甚至可以互换,但是也有区别。对于他们的选择反应了你对该问题的理解。
本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52755868
1. 两者关系总结
(1)抽象类和接口都不能够实例化。一个类如果继承了某个抽象类或者实现了某个接口,都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。
但是实现接口的必须要实现该接口的所有方法。抽象类可以选择不用全部实现。
(2)抽象类提供了一个继承的概念,它的出发点就是为了继承,只能继承一个父类。但是接口不同,一个类可以同时实现多个接口。
(不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷。)
(3)抽象类中可以包含成员变量、抽象方法、具体方法、构造方法等;(抽象类中不一定必须有抽象方法,而有抽象方法一定是抽象类。)
而接口中只能存在成员变量和抽象方法。这些成员变量都会自动变为public static final,即静态的不可变的成员数据(一般都不在接口中定义成员数据)。
这里有个小问题,为什么接口的成员变量都会自动变为为public static final?
这是因为接口不可实例化,它的所有元素都不必是对象层面的,显然static 满足了这一点。
而且如果接口的变量能被修改,那么一旦一个子类实现了这个接口,并修改了接口中的没有被final修饰的变量,而该子类的子类再次修改这个变量的时候,造成的结果就是虽然实现了相同的接口,但接口中的变量值是不一样的,显然final满足了这一点。
(4)抽象类是对类抽象,是面向整个类的自下而上的设计理念,一般是先有各种子类,再有把这些有关系的子类加以抽象为父类的需求。
而接口是对行为的抽象,是面向行为的自上而下的设计理念,接口根本就不需要知道子类的存在,只需要定义一个规则即可。
2. 结束语
通过以上从实现程度、一继承多接口、内部成员结构、以及设计理念四个角度对接口和抽象类的区别进行理解之后,便可以在选择使用接口或者抽象类时做出更加合理的设计。转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52755868
- Java技术——Interface与abstract类的区别
- Java Interface与abstract类的区别
- java中interface与abstract的区别
- java 中 abstract 与interface的区别
- Java中abstract与interface的区别
- Java 中 Interface与abstract类的区别和相同点
- Interface与abstract类的区别
- Interface与abstract类的区别
- Interface与abstract类的区别
- 11. Interface与abstract类的区别。
- Interface 与 abstract 类的区别
- java abstract类和interface的区别
- [Java] abstract类和interface的区别
- abstract,以及abstract抽象类与interface接口的区别
- abstract与interface的区别
- abstract与interface的区别
- abstract与interface的区别
- Abstract与Interface的区别
- 表达式求值(整数运算)
- DVWA漏洞学习(2)反射型XSS
- 计算机算法设计与分析 笔记
- 数据库安全性
- C#代码连接Oracle数据库一段时间以后[connection lost contact]的问题
- Java技术——Interface与abstract类的区别
- mac配置java环境
- 使用iText7----生成纯文本、图片、表格内容的pdf文件
- Android视频播放02—SurfaceView实现
- iOS接入微信支付(小白都能看懂的微信支付)
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- 第一行代码笔记,第三章----UI的点滴
- Android编译环境搭建-ubuntu虚拟机中AndroidStudio真机调试
- 存储过程与触发器