为什么需要写个接口而不是直接写在类中

接口的定义

在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口与抽象类最大的区别就是一个类可以实现多个接口但是只能继承一个类

让我们先定义一个行为的接口:

 

这个行为的接口有两个方法:

一个是吃东西

 

一个是睡觉

 

再让我们定义一个实现类来实现行为接口:

 

可能有人看到这就有疑问,我直接写类不行吗?为什么要多定义一个行为接口?

例如:

 

貌似更简洁、方便?

再让我们定义一个猫类来实现这个行为接口

 

再让我们定义一个狗类实现这个行为接口

 

可能有人能看出点东西了,但我单独定义好像也没问题呀?

例如:

 

有的同学可能开始讲接口的定义了来表示自己懂这个问题

接口是一种规范...

接口定义了功能让其他类实现...

接口让其他实现来实现接口中的方法...

 

先放下这些,让我们继续!

定义好了猫猫和狗狗,该让它们干活了

实现了行为的接口:

 

未实现行为接口:

 

让我们把第一个再简化一下

 

我们定义了一个liveAbleGo

 

来接收实现LiveAble的实现类对象

让我们来推导一下吧!

只要是这个接口的实现类都能接收--->

只要是这个接口的实现类都有这两个方法--->

只要是这个接口的实现类都能执行里面的两个方法

 

可能两个实现类你感知不出来,但是实现类多起来即使简单的两个行为也会变得很复杂.

 

如果你没有实现这个接口,那请问你要怎么做?

可能有同学会说那我继承呗...

强调一下:

继承加强了类之间的耦合性并且类只能继承一个,但是可以实现多个接口

兜兜转转,好像接口才是最优解

posted @   流年不粘  阅读(874)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示