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.安全:就是安全,
(新人浅薄理解,欢迎指正)