接口

很多人纳闷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. js 数组一些简单应用

    把两个数组连接成按从小到大的一个数组例如: var allowVlan = '23-25,45,4-6,67,50-53'; var unTagVlan = '1-5'; 完成时应该是1-6,23-2 ...

  2. 人见人爱A-B 题解

    参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算.(当然,大家都知道集合的定义,就是 ...

  3. 2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解

    写在前面 ·实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段——g ...

  4. python 2 和3 的区别

    python 2 和3 的区别 Python2 Python3 打印 print " " print() 输入 raw_input() input() 范围 range/xrang ...

  5. JVM的组成

    JVM一共有五大区域,程序计数器.虚拟机栈.本地方法栈.Java堆.方法区. 程序计数器 程序技术器是一块很小的内存空间,由于Java是支持多线程的.当线程数大于CPU数量时,CPU会按照时间片轮寻执 ...

  6. MySQL数据备份及还原(一)

    关于删库跑路的事故现在已经屡见不鲜了,数据备份的必要性是企业数据管理极其重要的一项工作.关于数据备份.恢复也有很多场景及方法,本系列也会将主要的几种工具通过案例进行演示. 本系列将从逻辑备份及恢复开始 ...

  7. C#中无边框窗体拖动

    //定义一个bool变量标识是否拖动窗体 private bool isMove = false; //记录鼠标的位置 private Point point; 定义的变量 /// <summa ...

  8. DRF之restful规范、Postman接口测试

    一. DRF简介 Django REST框架是一个功能强大且灵活的工具包,用于构建Web API. 使用REST框架的一些原因: 该网站可浏览API是你的开发人员一个巨大的可用性胜利. 身份验证策略包 ...

  9. VirtualBox 安装 Centos8 使用 Xshell 连接

    1.下载CentOS CentOS下载地址:https://wiki.centos.org/Download 这里选择本地安装包,网络安装包在安装时需要在线下载资源比较慢 2.安装VirtualBox ...

  10. 洛谷 P3935 Calculating 题解

    原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...