抽象类与接口详解
第六章 抽象类与接口
目录
内容仅供学习交流,如有问题请留言或私信!!!!!
有空您就点点赞
1.接口
- 概念性的接口,指系统对外提供的所有服务。
- interface定义的实实在在的接口,即接口类型
语法:
[访问修饰符] interface 接口名称 [extends 其他的接口名]{
//声明变量
//声明方法
}
public interface MyInterface {
public void foo()
//其他方法
}
接口 ≠ 类
接口特性:
- 接口不可被实例化
- 实现类必须实现接口的所有方法
- 实现类可以实现多个接口
- implements、多个接口使用逗号隔开
- 接口中的变量都是静态常量(public static final)
- 接口中所有方法默认都是 public abstract
---------------------------------------------------------------------------------------------
JDK8新增的接口特性:
- JDK1.8后,接口里可以有默认方法(方法体)
- default(关键字)默认方法
- 默认方法可以被继承,通过实例调用
- 如果一个类实现了多个接口,多个接口都定义了多个同样的默认方法
- 方案一:实现类需要覆盖重写接口中的默认方法,不然会报错
- 方案二:可以使用super来调用指定接口的默认方法
- 如果一个类继承了一个抽象类,实现了一个接口,抽象类和接口同时存在相同的方法
- 采取类优先的原则,优先继承抽象类的方法
- 接口默认方法可以有多个
- 接口里面可以声明(并且可以提供实现)的静态方法
- 接口中的静态方法必须是public的,public修饰符keyishenglue,static修饰符不能省略
- 静态方法不能被继承及覆盖,所以只能被具体所在的接口调用
- 接口中静态方法可以有多个
新增的原因:
默认方法:解决了接口与其实现类之间耦合度过高,修改接口,所实现类必须随之修改的问题
静态方法:帮我们实现静态工厂类,不用重新创建工具类了
---------------------------------------------------------------------------------------------
2.抽象类VS接口
相同点:
- 代表系统的抽象层
- 都不能被实例化
- 都能包含抽象方法
- 用于描述系统提供的服务,不必提供具体实现
不同点:
- 在部抽象类中可以为分普通方法提供但未能实现,JDK8之前接口中只能包含抽象方法,JDK8之后接口可能包含默认方法
- 一个类只能继承一个直接的父类,但可以实现多个接口
---------------------------------------------------------------------------------------------
使用原则:
- is - a ----抽象类 ; has - a ----接口
- 接口做系统与外界交互的窗口
- 接口提供服务
- 接口本身一旦制定,就不允许随意修改
- 抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点
- 抽象类便于复用,接口便于功能扩展和维护
---------------------------------------------------------------------------------------------
3.接口的作用
能力、约定、标准。
- 提高程序的可维护性和可扩展性
- 提高程序的规范性
- 提高程序的安全性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)