很早之前一次面试准备了一个很简单的关于Java中接口概念的ppt,现在整理一下搬到简书上。
什么是接口?
简单讲,接口就是一种规范。
例如,国标GB100-2008对单向两极带接地插头的技术参数做出了规范,国标仅仅是作出了规范,并没有要求由谁来生产,怎么生产。从这个意义上讲国标就是一种接口。
国标 GB100-2008有了国标这个“接口”,这样如西门子、公牛这些厂家就可以根据这些技术参数去生产插座了。
插座也正是有国标这个“接口”规范了插座的各种参数,那么我们实际消费者不管用哪个厂家的插座,我们的用电器可以直接使用。
实际用电器到此,以一种比较生活化的例子讲了一下接口以及相关的几个角色:
国标 类比 接口
插座不同生产厂家 类比 接口的实现
实际的用电器 类比 实际调用者
Java中的接口
接口定义
/**
* 定义一个插座的接口
*/
public interface ISocket {
// 定义一个运行的方法,没有具体的实现
// 就像国标一样,只是一个标准
void run();
}
接口实现
// 定义了一个西门子插座的类,继承ISocket接口
public class SiemensSocket implements ISocket {
// 实现接口中定义的方法
@Override
public void run() {
System.out.println("我是西门子插座,开始供电...");
}
}
// 同理定义一个公牛插座的类,也继承ISocket接口
public class BullSocket implements ISocket {
// 实现接口中定义的方法,但和西门子插座类中的方法不同
@Override
public void run() {
System.out.println("我是公牛插座,开始供电...");
}
}
接口调用
public class Main {
private static void useSocket(ISocket socket) {
socket.run();
System.out.println("<<< 电源已接通,开始供电 >>>\n");
}
public static void main(String[] args) {
useSocket(new SiemensSocket());
useSocket(new BullSocket());
}
}
程序运行结果
程序运行结果可以看出,对用实际的调用者,可以调用不同的实现类。
扩展
1. 多态
父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类的对象;意味着,根据不同实现方法对象,相同方法名称具有不同的行为。
2. 面向接口编程
项目开发中先把客户的业务需求提取出来作为接口,业务具体实现通过该接口的实现类来完成,如果出现业务需求发生变动,只需修改实现类即可,其他依赖关系可以保持不变,从而实现接口和具体业务实现分离,减少bug产生。
图片源自网络,侵权必删!
网友评论