接口

很多人纳闷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. eslint常用三种校验语句

    1.关闭对整段代码的校验 /* eslint-disable */ code /* eslint-enable */ 2.关闭当前行代码的校验 line code // eslint-disable- ...

  2. webStorm ctrl+L 跳转到指定行line eclipes快捷键

    webStorm ctrl+L 跳转到指定行line eclipes快捷键

  3. javascript中事件概述

    事件就是用户或浏览器自身执行的某种动作.诸如click.load.和mouseover,都是事件的名字.而响应某个事件的函数就叫做事件处理程序(或事件侦听器).事件处理程序的名字以"on&q ...

  4. Java第一节课动手动脑

    在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...

  5. Asp.net Repeater控件的绑定与操作

    由于repeater 控件具有的一个特性--循环 <ItemTemplate>的内容,Repeater 控件里的某个元素对象的绑定与获取,不像平常的,直接使用控件的 id 便可以给该控件进 ...

  6. JavaScript隐式类型转换(详解 +,-,*,/,==)

    JavaScript 在 运算 或 比较 之前, 会自动进行隐式类型转换. 下面我们来仔细讲一讲 + - * / == 运算符经历了哪些过程. 类型转换 ECMAScript 运行时系统会在需要时从事 ...

  7. MySQL数据库的创建和操作以及多表查询

    创建数据库: CREATE DATABASE 数据库名称; 查看所有的数据库: SHOW DATABASES; 操作指定数据库: USE 数据库名称; 查看当前所操作的数据库: SELECT DATA ...

  8. java-随机点名2(新手)

    //创建的一个包名. package qige; //导入一个包.import java.util.*; //定义一个类.public class SJdm { //公共静态的主方法. public ...

  9. Bash语句中的循环语句注意事项

    case #!/bin/bash case $1 in 9) echo "nine" ;; 8) echo "eight" ;; 7) echo "s ...

  10. Linux 基础篇(二)

    1.linux 关机和重启 关机: shutdown  -h  10:20  # 指定时间关机 shutdown -h now    # 马上关机 shutdown -h +10  # 10分钟后关机 ...