Java第一篇:为什么是接口?
好家伙,
写了一道Java作业:
一道简单的接口练习题
而答案也比较简单

public class Demo1 { public static void main(String[] args) { Circle cir = new Circle(); Rectangle rec = new Rectangle(); cir.setR(4); rec.setLength(3); rec.setWidth(2); System.out.println("面积为:"+cir.area()+"\t周长为"+cir.perimeter()); System.out.println("面积为:"+rec.area()+"\t周长为"+rec.perimeter()); } } //定义接口 interface IShape1{ public abstract double area(); } interface IShape2{ public abstract double perimeter(); } //定义类 class Circle implements IShape1,IShape2{ static final double pl=3.14; double r; public double getR() { return r; } public void setR(double r) { this.r = r; } public double area() { return pl*r*r; } public double perimeter(){ return 2*pl*r; } } class Rectangle implements IShape1,IShape2{ double length; double width; public double getLength() { return length; } public void setLength(double length) { this.length = length; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double area() { return width*length; } public double perimeter(){ return 2*(width+length); } }
那么问题来了,
接口存在的意义是什么?
(他好像什么都说了,又好像什么都没说)
看到了一个很棒的解释:
接口的作用就是把使用接口的人和实现接口的人分开,
实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节。
来自:java中接口的意义 - 简书 (jianshu.com)
举个例子:
我的笔记本的触摸板实在是太难用了,我希望能外接一个鼠标,
而这个鼠标使用统一的usb插头,那么我把这个鼠标的插口插到接口中,
就可以使用鼠标了
那么接口的意义就是:
(我给你一个用我的方法)
1.规范性:
如果一个项目比较庞大,那么就需要定义一些主要的接口,
这些接口不仅告诉开你需要实现哪些业务,而且也将命名规范限制住了
接口为类提供类规范:为哺乳动物定义speak方法,那么猫和狗的叫都是speak方法了
不会说出现,狗是汪汪叫,而猫是喵喵叫
再比如,我给笔记本接鼠标,接键盘,都是usb口的,二笔记本也提供了多个usb口,
我能插了就用,
而不是多个HDMI口或是雷电口而导致接不了用不了,这就是规范了
2.拓展性:
比如有一个类,实现了某个功能,突然有一天,发现这个类满足不了需求了,
然后又要重新设计这个类,给加方法,加特技,
我的猫,必须不但要会叫,还要会唱跳rap篮球,还要会空中翻跟斗
我的狗,也要会叫,还要会唱跳rap篮球,还要会空中翻跟斗
那么我用接口去为他们设计这些方法,拓展性更强
又比如我的笔记本屏幕好小,满足不了我了,我要外接一个大显示屏,这便是拓展了
3.便于维护:
出bug了,可以按着接口功能来一个个改,
(你定义接口接口的时候肯定要确定这个接口是负责干嘛的)
这个好理解,鼠标坏了,修鼠标,或者换一个,
4.安全:就是安全,
(新人浅薄理解,欢迎指正)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具