接口是一套大家事先商量好的协议,类似生产充电器和生产手机的两个厂家,为了让充电器能完美插上手机,那他们各自生产产品之前,必须商量好我的数据线的尺寸该多大,你的手机留的槽该多大合适,于是它们就给出第三方标准,就是接口,两者只要满足这个接口的要求,就能确保你生产的充电器能完美适配我生产的手机
所以,接口就是双方或者多方事先共同遵守的一套协议,自己制定的生产标准规格
- 接口可以使项目分层,所有层面向接口开发,效率大大提高
- 接口可以使项目变得可插拔,代码与代码之间耦合度降低
注: 接口和抽象类都可实现时,优先选接口:
- 接口可以与接口之间实现多继承
- 类实现接口的同时还能继承其他类,即接口保留了类的继承
public interface Cpu {//定义cup接口
void start();
}
public class Valon625 implements Cpu{//具体型号的cup
@Override
public void start() {
System.out.println("搭载骁龙625");
}
}
public class Valon820 implements Cpu {//骁龙820
@Override
public void start() {
System.out.println("搭载骁龙820");
}
}
public class Valon835 implements Cpu {//骁龙835
@Override
public void start() {
System.out.println("搭载骁龙835");
}
}
public class Phone {
Cpu cpu;//接口
Phone(Cpu cpu){
this.cpu=cpu;//没有把类型写死
}
public void carryCpu(){
cpu.start();//此方法的具体情况要看是哪个类实现了cpu接口
}
}
public class CpuTest {//测试类
public static void main(String[] args){
Cpu cpu1=new Valon625();//面向接口编程,让项目变的可插拔,耦合度降低
Phone vivo=new Phone(cpu1);
vivo.carryCpu();
Cpu cpu2=new Valon820();//由于是接口,所以cpu的型号可以随时用多态来修改
Phone xiaomi5=new Phone(cpu2);
xiaomi5.carryCpu();
Cpu cpu3=new Valon835();
Phone huawei=new Phone(cpu3);
huawei.carryCpu();
}
}