接口概念
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
以下是个人理解:
在软件开发过程中,当我们开发一个大型项目的时候,可能很多人一起共同开发一个项目,但是整个项目分为很多模块,我们不能按照顺序去开发模块,等A团队开发测试完毕第一个模块,B团队才开始开发第二个模块,这样的话,如果A团队出现延期,那么将会影响整个项目的开发进度,所以这种串行的开发方式是不行的,那么我们就可以并行开发,要想做到并行开发,那么B团队开发的时候就假设A团队已经开发好,此时就引入了接口。也就是A先给B提供一个输出结果,B在这个结果的基础上开发就行。
代码实现
代码结构图:
package cn.test.logan.day07; import java.util.HashMap; public class ServiceTest { public static void main(String[] args) { // 面向接口编程,可以用“接口类型变量”来引用“具体实现的对象” // 这样,在软件开发的时候,可以在业务实现之前先开发自己的逻辑调用代码 //ServiceDemo service = null; // 等接口的实现类开发完毕之后,给接口变量赋值为实现类对象即可,下面写的代码都无需改动 ServiceDemo service = new ServiceImpl(); // Step1方法的调用 String str = service.Step1(); System.out.println(str); // Step2方法的调用 service.Step2("Logan"); // Step3方法的调用 HashMap<Integer,String> hashmap= service.Step3(1, "我是Step3"); System.out.println(hashmap.get(1)); } }
package cn.test.logan.day07; import java.util.HashMap; /** * 接口中只有方法定义,没有方法的实现 * 所以,接口是不能被实例化的 * 接口的作用:就是用来在业务实现和调用者之间定义一个功能规范 * @author QIN * */ public interface ServiceDemo { public String Step1(); public void Step2(String name); public HashMap<Integer,String> Step3(int a,String b); }
package cn.test.logan.day07; import java.util.HashMap; /** * 实现类通过Implements关键字来跟接口建立联系 * 在实现类中,就必须将接口中定义的方法全部实现 * 另外,除了接口中定义的方法外,可以在实现类中定义额外的方法 * 在实现方法前加上@Override标志,表示该方法为实现类的方法,在Eclipse中当实现类的方法名与接口中的方法名不一致的时候则会出现错误提示 * @author QIN * */ public class ServiceImpl implements ServiceDemo{ @Override public String Step1() { return "我是Step1"; } @Override public void Step2(String name) { System.out.println("我是Step2,我的名字是:"+name); } @Override public HashMap<Integer, String> Step3(int a, String b) { HashMap<Integer, String> hashmap = new HashMap<Integer, String>(); hashmap.put(a, b); return hashmap; } }