一、接口的作用

1.可以使项目分层,所有层都面向接口开发,开发效率提高了。

2.接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔”,可以随意切换。

​总结:接口和抽象类能够完成某个功能,优先选择接口。因为接口可以多实现、​多继承。并且一个类除了实现接口之外,还可以去继承其他类(保留了类的继承)。

层次为:

测试类=====接口=====实现类

我们首相定义好接口,然后测试类使用接口定义好的变量或者方法进行调用,实现类则根据接口的定义来编写接口的实现类。

例如:Jiekou j1 = new Shixianlei();其中类Shixianlei是接口Jiekou的实现。

二、这里举个例子

(1)创建一个"引擎“接口

(2)创建”奔驰“和”奥迪“两个引擎接口的实现类

(3)创建一个”车”类,里面可以加入两种引擎

(4)最后创建一个测试类,用来测试两种引擎的车

package com.bjpowernode.java_learning;

​

public interface D55_1_Engine {

  public void launch();

}
package com.bjpowernode.java_learning;

​

public class D55_2_Benz implements D55_1_Engine{

  public void launch() {

    System.out.println("Benz引擎启动");

  }

​

}
package com.bjpowernode.java_learning;

​

public class D55_3_Audi implements D55_1_Engine {

  public void launch() {

    System.out.println("Audi引擎启动");

  }

​

}
package com.bjpowernode.java_learning;

​

public class D55_4_Car {

  D55_1_Engine e;//这个类中的成员变量创建的必要性,这是为了能够让引擎的对象传进来,进行引擎对象的调用

  D55_4_Car(D55_1_Engine e){

    this.e = e;

  }

  public void testEngine() {

    e.launch();

  }

}
package com.bjpowernode.java_learning;

​

public class D55_5_test {

  public static void main(String[] args) {

    //生产引擎

    D55_1_Engine e1 = new D55_2_Benz();

    D55_1_Engine e2 = new D55_3_Audi();

    //生产汽车

    D55_4_Car c1 = new D55_4_Car(e1);

    D55_4_Car c2 = new D55_4_Car(e2);

    c1.testEngine();

    c2.testEngine();

  }

}

三、源码:

D55_1_Engine.java

D55_2_Benz.java

D55_3_Audi.java

D55_4_Car.java

D55_5_test.java

地址:

https://github.com/ruigege66/Java/blob/master/D55_1_Engine.java

https://github.com/ruigege66/Java/blob/master/D54_2_InterfaceExercise.java

https://github.com/ruigege66/Java/blob/master/D55_3_Audi.java

https://github.com/ruigege66/Java/blob/master/D55_4_Car.java

https://github.com/ruigege66/Java/blob/master/D55_5_test.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载55-接口的作用、接口举例的更多相关文章

  1. Java连载54-两种单例模式、接口详解

    一.单例模式分为两种: (1)饿汉式单例:在类加载阶段就创建了一个对象. (2)懒汉式单例:用对对象的时候才会创建对象.(连载53中例子就是懒汉式) 饿汉式举例: package com.bjpowe ...

  2. C#学习笔记(17)——C#中接口的作用

    说明(2017-7-17 23:50:48): 原文: 接口的作用 接口的作用(C#)(另一篇) C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体 ...

  3. java 接口的作用和好处

    1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...

  4. OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)

    Comparable和Comparator是JDK中定义的2个比较接口,很相似,但又有所不同. 这2个接口的作用和区别也是Java中的常见经典面试题. 下面我们就来详细介绍下这2个接口的定义.作用.区 ...

  5. C# 接口的作用浅谈举例(转)

    转:http://blog.csdn.net/liuqinghui1990/article/details/77171051 我初次接触接口(Interface),对接口的作用有点迷茫,C#接口中包含 ...

  6. java 标识接口的作用

    标识接口的作用 标识接口是没有任何方法和属性的接口.标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型. 标接口在Java语言中有一些很著名的应用,例如我们常用的Arra ...

  7. 【Java面试题】45 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。

    我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个java对象 ...

  8. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

    类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性, ...

  9. Java学习日记-7 抽象类和接口

    一.抽象类 abstract修饰:类和类中的方法 抽象方法:abstract type name(parameter-list);(abstract不能修饰static方法和构造函数) 引用:抽象类有 ...

随机推荐

  1. 学习构建调试Linux内核网络代码的环境MenuOS系统

    构建调试Linux内核网络代码的环境MenuOS系统 一.前言 这是网络程序设计的第三次实验,主要是学习自己编译linux内核,构建一个具有简易功能的操作系统,同时在系统上面进行调试linux内核网络 ...

  2. 服务器上无法调用Office组件的解决方法(HRESULT:0X800A03EC异常)

    HRESULT:0X800A03EC的异常,经过多番查找,终于找到了解决方法,在 Windows 2008 中, 如果以 SYSTEM 用户跑, 系统会去寻找 SYSTEM 这个用户的 Profile ...

  3. java设计模式(一)动态代理模式,JDK与CGLIB分析

    -本想着这个知识点放到Spring Aop说说可能更合适一点,但因为上一篇有所提到就简单分析下,不足之处请多多评论留言,相互学习,有所提高才是关键! 什么是代理模式: 记得有本24种设计模式的书讲到代 ...

  4. SpringBoot微服务电商项目开发实战 --- 模块版本号统一管理及Redis集成实现

    上一篇文章总结了基于SpringBoot实现分布式微服务下的统一配置.分环境部署配置.以及服务端模块的分离(每一个提供者就是一个独立的微服务).微服务落地.Dubbo整合及提供者.消费者的配置实现.本 ...

  5. Microsemi Libero使用技巧——FPGA全局网络的设置

    前言 刚开始做Microsemi FPGA+SoC开发时,会用到几个ARM专用的IP Core,功能一复杂起来,就会遇到某些信号如rst_n不能分配到指定的引脚上的情况,IO类型为CLKBUF,并不是 ...

  6. JS---DOM/BOM---学习road map---7 parts

    JS---DOM/BOM---学习road map---6 parts Part 1-2: Part 3-4 part 5-7:

  7. JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数

    封装缓动(变速)动画函数---增加任意多个属性&增加回调函数 回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()}; 这样一次点击,产生多个动画 & ...

  8. 开源资产管理系统Snipe-IT

    CentOS7安装IT资产管理系统Snipe-IT介绍资产管理工具Github:https://github.com/snipe/snipe-it官网:https://snipeitapp.com/D ...

  9. mysql与python的交互

    mysql是一种关系型数据库,是为了表示事物与事物之间的关系,本身存于数据库中的内容意义并不大,所以广泛应用于编程语言中,python中九含有与MySQL交互的模块 pymysql 编程对mysql的 ...

  10. Hive時間函數-年份相加減

    Hive時間函數-年份相加減 目前為止搜了很多资料,都没有找到Hive关于时间 年份,月份的处理信息,所以就自己想办法截取啦 本来是用了概数,一年365天去取几年前的日期,后来测试的发现不够精准,然后 ...