接口

很多人纳闷Java为什么会有接口这个知识点呢?其实很大程度上是为了间接实现多继承。但是因为C++的多继承实在是一个难点,Java为了吸取C++的教训,就推出了接口这个概念。接口是一种公共规范标准。

接口中可以包含哪些数据类型呢?

  1. 常量。
  2. 抽象方法。
  3. 默认方法。(jdk 1.8新增)
  4. 静态方法。(jdk1.8新增)
  5. 私有方法。(jdk 9新增)

接口注意事项

  1. 接口是一种引用数据类型。
  2. 接口编译完成后仍然对应的是.class文件。
  3. 类中实现接口用 implements 关键字实现。
  4. 接口与接口之间是多继承关系,如果重复默认方法,需要覆盖重写。
  5. 接口中抽象方法固定的两个关键字是 public abstract,但是可以省略不写。
  6. 接口中默认方法固定的两个关键字是 public default,默认方法中需要实现方法体。
  7. 接口中静态方法固定的两个关键字是 public static,静态方法中需要实现方法体,且必须使用接口直接调用,不能通过实现类对象调用。
  8. 接口中可以定义“成员变量”,但是必须标明是 public static final 三个关键字进行修饰。所以从效果上看,被称为常量。只能通过接口直接点,不可以用实现类的对象点。
  9. 接口当中的常量必须赋值,且建议大写,用下划线分割多个单词。
  10. 接口中实现类必须覆盖重写接口中所有的抽象方法。
  11. 接口中实现类如果没有覆盖重写接口中的所有抽象方法,这个实现类必须是抽象类。
  12. 如果一个类实现了多个接口,这多个接口当中,如果有相同的抽象方法,则只需覆盖重写一次即可;如果有相同的默认方法,则必须覆盖重写默认方法。
  13. 如果一个类的父类方法和接口的默认方法冲突了,则优先使用父类的方法。
  14. Java当中继承优先于接口。
  15. 接口中默认方法会被实现类继承,也可以被接口实现类覆盖重写。
  16. 接口中私有方法是为了减少代码量,并且对实现类不可见,所以不可以定义为public(业务思维,不是语法问题)。
  17. 接口中私有方法是用来抽取接口中默认方法或静态方法之间的代码重复问题,它是为了简化代码而设计。接口的私有方法分为 ①默认私有方法。②静态私有方法。定义格式分别如下:

①默认私有方法定义格式:

private 返回值类型 方法名(方法参数){

方法体;

}

②静态私有方法定义格式:

private static 返回值类型 方法名(方法参数){

方法体;

}

代码:

USB接口类:

public interface UsbInterface {

public static final String info = "Intel USB规范";

public abstract void inPut();

    public abstract void outPut();

public static void birthYear(){

System.out.println("USB_4 规范提出于2019年");

    }

public default void showInfo(){

System.out.println("正在检测系统是否升级");

        System.out.println();

    }

}

USB接口实现类:

public class InterfaceLearn implements UsbInterface{

    @Override

    public void inPut() {

System.out.println("正在拷贝信息到优盘");

}

@Override

    public void outPut() {

System.out.println("正在从优盘拷贝信息");

}

}

运行类:

public class Demo {

public static void main(String[] args) {

InterfaceLearn usb = new InterfaceLearn();

        usb.inPut();

        usb.outPut();

        usb.showInfo();

        UsbInterface.birthYear();

    }

}

java第九天,接口是什么?如何实现接口的更多相关文章

  1. Effective java笔记(三),类与接口

    类与接口是Java语言的核心,设计出更加有用.健壮和灵活的类与接口很重要. 13.使类和成员的可访问性最小化 设计良好的模块会隐藏起所有的实现细节,仅使用API与其他模块进行通信.这个概念称为信息隐藏 ...

  2. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  3. Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

    36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...

  4. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  5. Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

    Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么 ...

  6. Android(java)学习笔记66:实现Runnable接口创建线程 和 使用Callable和Future创建线程

    1. 前面说的线程的实现是新写一个子类继承Thread: 是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例 2. 这里说的方案2是指 ...

  7. JAVA:类的三大特征,抽象类,接口,final关键字<3>

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  8. Java中实现对象的比较:Comparable接口和Comparator接口

    在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中 ...

  9. java提高篇(四)-----抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

随机推荐

  1. (转)USB的VID和PID,以及分类(Class,SubClass,Protocol)

    USB的VID和PID,以及分类(Class,SubClass,Protocol) 原文地址:http://blog.csdn.net/gaojinshan/article/details/78783 ...

  2. debug.js在手机上打印调试信息

    在做移动端开发的时候大家应该都遇到过这么一个问题:如何在手机上打印调试信息? 在pc端我们通常会用console.log 或者 alert,但大家知道console.log在手机上是看不到打印信息的: ...

  3. SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...

  4. python-参考书

    真的是找了很多的参考书,但是看懂,上手用的就一本比较好的<编程小白的第1本python入门书>非常的好. 属于那种一看就懂,能说明白的.别的,要么就是翻译的外文的,有点难以理解,要么就是中 ...

  5. router路由的使用

    router路由的使用 1.使用nuxt-link来跳转路由 <!-- 要跳转的路由的地址就是pages文件夹中定义的xxx.vue的前缀名--> <nuxt-link to=&qu ...

  6. Natas6 Writeup(PHP Include)

    Natas6: 该题提供了php源码,点击查看分析,发现调用了includes/secret.inc页面,在输入一个变量secret后,如果和includes/secret.inc中 预设的secre ...

  7. requests模块使用一

    1.安装与简介 Urllib和requests模块是python中发起http请求最常见的模块,但是requests模块使用更加方便简单. pip install requests 2.GET请求 2 ...

  8. 解决tinyint映射成boolean/byte的问题

    前言 最近受疫情的影响,公司要做一个类似一码通的系统为客户服务.由我来进行表的设计.创建表之后需要逆向生成Java的entity.mapper.mapper.xml.由于我在数据库中定义了大量 tin ...

  9. 第九周Java实验作业

    实验九 异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. Ja ...

  10. 洛谷 P1891 疯狂LCM 题解

    原题链接 享受推式子的乐趣吧 数论真有趣! 庆祝:数论紫题第 \(3\) 道. \[\sum_{i=1}^n \operatorname{lcm}(i,n) \] \[= \sum_{i=1}^n \ ...