接口

很多人纳闷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. vim不能使用小键盘

    使用终端登录Linux后使用vim编辑文本,这时在默认设置下载插入模式使用小键盘会插入一些非数字的字符. 更改的方法: 在终端设置中选择终端类型为linux

  2. Ng-Matero V9 正式发布!

    距离 Ng-Matero 第一版发布已经过去了半年多,该项目获得了越来越多的关注及喜爱,甚至得到了外国友人的赞助.借此项目也认识了很多对 Angular 和 Material 感兴趣的朋友,如今对项目 ...

  3. 小白学 Python 数据分析(17):Matplotlib(二)基础操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  4. mysql5.7 ERROR 1045 (28000): Access denied for user解决方法

    https://blog.csdn.net/csy2961903/article/details/51345401  参考此文注意指名数据库mysql.user

  5. 4L-线性表之数组

    关注公众号 MageByte,设置星标点「在看」是我们创造好文的动力.后台回复 "加群" 进入技术交流群获更多技术成长. 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同 ...

  6. Mac brew命令的使用

    mac 终端程序管理工具 能让你更快速的安装你想要的工具.而不用考虑大量的依赖. 安装brew复制下面的命令,终端执行  官网Homebrew /usr/bin/ruby -e "$(cur ...

  7. vunlhub-DC-1-LinuxSuid提权

    将靶场搭建起来 桥接看不到IP 于是用masscan 进行C段扫描 试试80 8080 访问之后发现是个drupal 掏出msf搜索一波 使用最近年限的exp尝试 exploit/unix/webap ...

  8. django自动生成接口文档

    我们在实际项目中,会需要将我们的一些接口的信息返回给前端,便于前后端的交互,在实际使用中,这种自动生成接口文档的模块很多,我主要是用REST framework自动生成接口文档,这个需要用到的是cor ...

  9. O3优化模板

    #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC ...

  10. 贪心-谷歌-857. 雇佣 K 名工人的最低成本

    2020-03-15 22:00:39 问题描述: 有 N 名工人. 第 i 名工人的工作质量为 quality[i] ,其最低期望工资为 wage[i] . 现在我们想雇佣 K 名工人组成一个工资组 ...