Java入门 18 3\25

接口(interface)

( A is a B A/B是子父类的关系、B是父类,A是子类。)

接口的使用

  1. 接口使用interface来定义。
  2. Java中,接口和类是并列的两个结构。
//类
public class InterfaceTest{public static void main(String[] args){System.out.println(Flyable.MAX_SPEED);System.out.println(Flyable.MIN_SPEED);
//flyable.MIN_SPEED = 2;Plane plane = new Plane();plane.fly.            }
}//接口
interface Flyable{//全局常量public static final int MAX_SPEED = 7900;  //第一宇宙速度int MIN_SPEED = 1; //省略了public static final//抽象方法public abstract void fly();void stop();//省略了public abstract}//重写了全部的抽象方法。
class Plane implements Flyable{@Overridepublic void fly(){System.out.println("通过引擎起飞");}@Overridepublic void stop(){System.out.println("驾驶员减速停止");}
}//只重写了部分抽象方法。需要定义为抽象类。
abstract class Kite implements Flyable{@Overridepublic void fly(){}
}
  1. 如何定义接口,定义接口中的成员。

    • JDK7及以前,只能定义全局常量和抽象方法。

      • 全局常量:public static final的。但是有些值可以省略不写。
      • 抽象方法: public abstract的。
    • JDK8, 除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法。
  2. 接口中不能定义构造器!意味着接口不可以实例化。

  3. Java开发中,接口通过让类去实现(implements)的方式来使用。

    • 如果实现了类覆盖了接口中的所有抽象方法、则次实现类就可以实例化。
    • 如果实现类没有覆盖接口中所有的下抽象方法,则此实现类仍未一个抽象类。
  4. Java类可以实现多个接口 ————> 弥补了Java单继承性的局限性。

    ​ 格式: class AA extends BB implements CC,DD,EE…{

    ​ }

class Bullet implements Flyable, Attackable{}
  1. 接口与接口之间可以继承,而且可以多继承。
  2. 接口的具体使用,能够体现多态性。
  3. 接口,实际上可以看作是一种规范。

面试题: 抽象类与接口有哪些异同?

接口的使用

  1. 接口的使用上也满足多态性。
  2. 接口,实际上就是定义了一种规范
  3. 开发中,体会面向接口编程。

public class USBTest{public static void main(Stinrg[] args){//造实现类的对象。Computer com = new Computer();//1.创建了接口的非匿名实现类的非匿名对象Flansh flash = new Flash();com.transferData(flash);//2.创建了接口的非匿名实现类的匿名对象com.transferData(new Printer());//3.创建了接口的匿名实现类的非匿名对象。USB phone = new USB(){public void start(){System.out.println("手机开启工作");}@Overridepublic void stop(){System.out.println("手机结束工作");}}}
}class Computer{//USB类的实例化对象usbpublic void transferDate(USB usb){//UBS usb = new Flashusb.start();System.out.println("具体传输数据细节");usb.stop;}}interface USB{//定义了长、宽、最大最小的传输速度等。void start();void stop();}class Flash implements USB{@Override public void start(){System.out.println("U盘开启工作");}@Overridepublic void stop(){System.out.println("U盘结束工作");}}class Printer implements USB{@Override public void start(){System.out.println("打印机开启工作");}@Overridepublic void stop(){System.out.println("打印机结束工作");}}

接口的应用:代理模式(Proxy)

  1. 概述:

    ​ 代理模式是Java开发中使用较多的一种设计模式。代理设计就是为了其他对象提供一种代理以控制对这个对象的访问。

public class NetWork Test{public static void main(String[] args){ProxyServer proxyServer = new ProxyServer(server);proxyServer.browse();}
}interface NetWork{public void browse();}//被代理类
class Server implements NetWork{@Override public void browse(){System.out.println("真实的服务器访问网络");}
}//代理类
class ProxyServer implements NetWork{private  NetWork work;public ProxyServer(NetWork work){this.work = work;}public void check(){System.out.println("联网之前的检查工作");}@Overridepiblic void browse(){check();work.browse();}
}

接口的应用:工厂模式

工厂模式:实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

Java8中的接口新特性。

  1. 除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法。

  2. 接口中定义的静态方法,只能通过接口来调用。

  3. 通过实现类的对象,可以调用接口中的默认方法。

  4. 如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法。

  5. 如果子类(或实现类)继承父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法。----->类优先原则

  6. 如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,报错。------>接口冲突。

    这就需要我们必须在实现类中重写此方法。

  7. 如何在子类(或实现类)的方法中调用父类、接口中被重写的方法。

    public void myMethod(){method3();//调用自己定义的重写的方法。super.method3();//调用的是父类中声明的//调用接口中的默认方法CompareA.super.method3();CompareB.super.method3();
    }
    

Java入门 18 3\25相关推荐

  1. JAVA入门[18]-JdbcTemplate简单实例

    一.关于JdbcTemplate JdbcTemplate是最基本的Spring JDBC模板,这个模板支持简单的JDBC数据库访问功能以及基于索引参数的查询. Spring数据访问模板:在数据库操作 ...

  2. 25 篇 Java 入门技术博文,送给正在自学的你

    很多大学生或者正在自学的程序员问我:"二哥,能否提供一个 Java 入门的学习路线?"刚好我之前花了 7 周多的时间写了 25 篇 Java 入门的技术博文,于是我想不妨把这些整理 ...

  3. Java入门学习笔记[狂神说Java]

    写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...

  4. Java入门1.2.3—一个老鸟的Java学习心得

    Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌    出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...

  5. Java入门基础及面试100题--初入门

    Java入门基础及面试100题 注:适合应届毕业生或java初入门者 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, ...

  6. 涵盖从java入门到深入架构,Linux、云计算、分布式、大数据Hadoop、ios、Android、互联网技术应有尽有

    [涵盖从java入门到深入架构,Linux.云计算.分布式.大数据Hadoop.ios.Android.互联网技术应有尽有] 1.javascript视频教程 链接: http://pan.baidu ...

  7. Java入门(四):进阶

    目录 2. Java进阶 2.6 Java常用类 2.6.1 IO 2.6.1.1 定义 2.6.1.2 IO的分类 2.6.2 File类 2.6.2.1 定义 2.6.2.2 File类的构造方法 ...

  8. java魔塔源代码_JAVA魔塔源代码,适合java入门

    [实例简介] java魔塔框架代码,易理解,适合Java入门,其中,魔塔实现的主体都在MTowerPanel类里面,该项目涉及到线程并发,文件读取与存储,图片应用,Graphics类的应用,Playe ...

  9. 我的 Java 入门项目

    我的 Java 入门项目 我入门 Java 是在2019年10月入的,当时已经学完了 C语言,因此这个入门项目只用了一个下午 工具:IDEA + MariaDB + Navicat + Tomcat ...

最新文章

  1. 程序猿想聊天 - 創問 4C 團隊教練心得(一)
  2. centos7虚拟机使用docker搭建swoole环境
  3. 在中国Windows Azure服务中创建应用程序的一些不同之处
  4. Jenkins之构建Maven项目的多种方式
  5. 深度学习分割json_to_data报错Too many dimensions: 3 > 2
  6. views 多个文件夹 netcore_Visual Studio 2019发布.NET Core项目部署或者独立运行的方法...
  7. 并发容器之CopyOnWriteArrayList
  8. 33 -jQuery 属性操作,文档操作(未完成)
  9. 【BZOJ】1013 球形空间产生器
  10. UNIX(多线程):22---几种常见的线程池
  11. 转:Cocoa Runtime系统知识整理
  12. 认识java编程语言
  13. websocket server client 编写
  14. python验证码登录代码_Python模拟登录验证码(代码简单)
  15. 这个在线抠图工具,好用又免费,告别Photoshop繁杂操作
  16. Android安装应用后点击打开(Open)带来的问题及解决方式
  17. java每日一练(19_03_18)
  18. Base64加解密__完整版有解释
  19. Dell Inspiron 5520 笔记本盲刷BIOS
  20. AppScan 是一款web安全扫描工具

热门文章

  1. 【数据结构复习】二叉树的遍历——从微软2014校园招聘说起
  2. java decvm_java – 如何使用-XX:UnlockDiagnosticVMOptions -XX:CompileCommand =打印选项与JVM HotSpot...
  3. synergy服务器未响应,请问synergy启动不了怎么回事???
  4. 8.25 欢乐emmm赛
  5. 职业学校计算机教学创新论文题目,信息技术论文题目大全
  6. 计算机网络实验一层二叉树,2016考研计算机冲刺考点梳理:二叉树算法(1)
  7. 天津插画师培训机构 ,0基础可以学吗?
  8. 天天搜题 大学生在线免费的搜题网站
  9. 计算机与仪表电缆,计算机与仪表电缆
  10. 服务器不显示NPC名字是什么情况,走进科学:一些不明显的服务器名字的由来