文章目录
-
- 前言
- 接口与抽象类
- 用了接口还有必要用抽象类吗?
- 小结
前言 关于接口与实现类的区别,相信大家都能说出一二三来,但小编在这还是总结一下。
接口与抽象类 1、二者表达概念不同,接口是为所有实现类定义的统一行为规范,实现类的行为需要按照接口中的规范去做。而抽象类是一类事务的高度聚合,对于继承抽象类的子类来说,与抽象类是 "is a"的关系。
2、抽象类在定义方法时,根据子类的一致行为,可以给出方法的实现,也可以不给出;而接口,其中定义的方法都不能给出实现部分。
3、继承/实现 对于两者所涉及的实现是不同的。继承抽象类的子类,可以不用进行重写,延用抽象类的方法,让其子类去实现。而对于接口来说,它的实现类必须给出相应的方法实现。
4、在抽象类中新增方法的话,其子类可以不用做任何改动,而在接口中新增方法,子类全部都要给出方法的实现。这也是为什么说接口是规范的意思。
5、接口可以多实现,而抽象类只能单继承。所以,使用接口可以实现间接的多重继承。
6、接口成员变量默认为:
public static final
并且必须赋初值,因为用 final 修饰,所以不能被修改。
而抽象类中成员变量默认为:
default
用了接口还有必要用抽象类吗? 在接口和实现类中有必要使用抽象类吗?增加了抽象类有什么好处呢?
让抽象类去实现接口,而不是每个实现类去实现接口,实现类一致的行为(或者说大部分一致的行为)在抽象类中进行实现,而不一致的行为(或者一小部分不一致的行为),在抽象类中写成抽象方法,让子类去重写,减少子类重写接口所有方法的负担。 使用抽象类前
文章图片
使用抽象类后
文章图片
小结 上文中例子,抽象类的作用是将子类一致的行为(flying)抽象出来,放到抽象类中,而不是各子类去实现,让子类复用抽象父类中的方法。
【用了接口还有必要用抽象类吗()】以上只是小编的一些想法,如有更好的观点,欢迎交流。
推荐阅读
- 放假不停学|原动力×云原生正发声 降本增效大讲堂
- 云原生系列技术|云原生系列技术(六)(Kubernetes 架构及核心组件详解)
- 技术交流|【云原生】Kubernetes(k8s)的架构与组件介绍
- #|15-Spring架构源码分析-Spring代理与AOP
- Java|想接私活薪资翻倍,根据这几个开源SpringBoot项目改改
- 设计模式|2.5 万字详解(23 种设计模式)
- 后端|一个忙碌架构师的Java后端书架(2022)
- java|2.5 万字详解(23 种设计模式,阿里京东面试必过)
- 架构|了解什么是架构基本概念和架构本质