好家伙,
写了一道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.安全:就是安全,
(新人浅薄理解,欢迎指正)