一、接口的作用

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. 【JS】312- 复习 JavaScript 严格模式(Strict Mode)

    点击上方"前端自习课"关注,学习起来~ 注:本文为 < JavaScript 完全手册(2018版) >第30节,你可以查看该手册的完整目录. 严格模式是一项 ES5 ...

  2. 【VMware】The VMX process exited permaturely

    问题现象: 开启虚拟机时出现如图问题:虚拟机退出过早 解决方法: 以管理员身份运行cmd,输入netsh winsock reset ,回车然后重启

  3. 从多谐振荡器详细解析到555定时器基本电路(控制LED闪烁)

    在学期末,笔者参加了学校的电工实习,前六天做都很快,但是今天要做一个关于555多谐振荡器的LED闪烁电路,由于笔者没有提前准备,导致今天就算把电路搭建出来也不懂具体原理,耗费了不少时间,所以我打算专门 ...

  4. 判断浏览器是否启用cookie

    <!DOCTYPE html> <html> <body onload="checkCookies()"> <script> fun ...

  5. C语言中表达n次方

    C语言中表达n次方可以用pow函数. 函数原型:double pow(double x, double y) 功    能:计算x^y的值 返 回 值:计算结果 举例: double a; a = p ...

  6. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 D 80 Days (线段树查询最小值)

    题目4 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an interesting game based on Jules Ve ...

  7. Ansible自动化部署入门到进阶笔记

    目录 一.基本部署 安装Ansible Ansible配置文件 定义Inventory 使用秘钥方式连接 使用帮助 Ansible命令应用基础 二.常见模块 三.Ansible playbook 四. ...

  8. JS---案例:移动元素,封装动画函数

    案例:移动元素,封装动画函数 1. div要移动,要脱离文档流---position:absolute 2. 如果样式的代码是在style的标签中设置,外面是获取不到 3. 如果样式的代码是在styl ...

  9. 带你了解Android Jetpack

    1.Jetpack主要特性有以下三点: 1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率. 2.消除样板代码Android Jetpack可管理繁琐的Activi ...

  10. docker学习笔记---基本命令

    [root@docker ~]# docker Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Opt ...