详解java中接口与抽象类的区别
作者:tb520ff 时间:2021-09-12 03:21:39
详解java中接口与抽象类的区别
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
结论
abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概 念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系(虽然都能够实现需求的功能)。这其实也是语言的一种的惯用法,希望读者朋友能够细细体会。
主要不同点:
1.单继承与多继承
2.抽象类可以有自己的实现方法,有非抽象方法,数据变量可以不是public的,接口的方法都是public的,没有自己的实利域,不能自己实现方法,方法都是抽象的,只能有静态数据。
3.设计意图,一个是一种抽象,一个是实现我能干什么的功能。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/yijiu0711/article/details/37313547
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java8中Optional类的使用说明
![](https://img.aspxhome.com/file/2023/1/57821_0s.png)
Java调用接口如何获取json数据解析后保存到数据库
![](https://img.aspxhome.com/file/2023/8/59058_0s.png)
Struts2返回json格式数据代码实例
java实现简单的英文文本单词翻译器功能示例
![](https://img.aspxhome.com/file/2023/8/59178_0s.png)
Jenkins初级应用之Invoke Phing targets插件配置
![](https://img.aspxhome.com/file/2023/9/64049_0s.png)
详解Spring Boot最核心的27个注解,你了解多少?
Java线程池 ThreadPoolExecutor 详解
![](https://img.aspxhome.com/file/2023/2/64392_0s.jpg)
Java中防止数据重复提交超简单的6种方法
![](https://img.aspxhome.com/file/2023/9/63059_0s.png)
一个JAVA小项目--Web应用自动生成Word
![](https://img.aspxhome.com/file/2023/4/69134_0s.jpg)
Android中bindService基本使用方法概述
![](https://img.aspxhome.com/file/2023/6/85446_0s.png)
openFeign服务之间调用保持请求头信息处理方式
Java实现微信红包分配规则
![](https://img.aspxhome.com/file/2023/8/66168_0s.png)
JAVA如何定义构造函数过程解析
![](https://img.aspxhome.com/file/2023/7/58477_0s.png)
C#实现温度转换功能
![](https://img.aspxhome.com/file/2023/2/69802_0s.jpg)
Java序列化JSON丢失精度问题的解决方法(修复Long类型太长)
国内分布式框架Dubbo使用详解
![](https://img.aspxhome.com/file/2023/3/71883_0s.jpg)
Java 多线程等待优雅的实现方式之Phaser同步屏障
![](https://img.aspxhome.com/file/2023/9/60549_0s.png)
java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径
web.xml SpringBoot打包可执行Jar运行SpringMVC加载流程
![](https://img.aspxhome.com/file/2023/9/59929_0s.jpg)
深入解析JVM之内存结构及字符串常量池(推荐)
![](https://img.aspxhome.com/file/2023/9/66469_0s.png)