接口

很多人纳闷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. 在vue中实现锚点定位功能

    场景如下: 今天早上看到需求方新提的一个需求,这是一份网上答卷,点击题数要实现滚动到对应题目的位置: 注意点:每题题目的高度是不受控制的,你可以取到想跳转的index:(我再循环题目时做了index+ ...

  2. Python - 变量的作用域

    变量作用域 Python能够改变变量作用域的代码段是 def . class . lamda. if/elif/else.try/except/finally.for/while 并不能涉及变量作用域 ...

  3. cocosCreator定制小游戏构建模板

    cocosCreator定制小游戏构建模板 1. 解决痛点 在开发微信小游戏过程中,需要在微信小游戏game.json加入一个配置键navigateToMiniProgramAppIdList,但常规 ...

  4. Html网页链接数据库验证账户密码(新手)

    连接代码(其中用到了连接池,不要忘记Jar包.拉入配置文件和工具类): package cn.Wuchuang.Servlet; import org.springframework.jdbc.cor ...

  5. redis 持久化RDB、AOF

    1.redis持久化简介 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合 ...

  6. 用angularjs写的一个简单的grid table

    效果图 用到的工具 1.需要先安装nodejs打开直接安装就好了 2.安装完成后使用 淘宝的源 国内速度快 安装方法 npm install -g cnpm --registry=https://re ...

  7. JDBC(三)----JDBC控制事务

    ##  JDBC控制事务 1.事务:一个包含多个步骤的业务操作.如果这个业务员操作被事务管理,则这多个步骤要么同时成功,要么同时失败. 2.操作: 1.开启事务 2.提交事务 3.回滚事务 3.使用C ...

  8. 为什么你的程序配了classpath还是找不到类

    classpath简介 classpath是java程序时拥有的一个系统变量,这个变量可以通过如下方式获取 System.out.println(System.getProperty("ja ...

  9. java两数相乘基础算法

    下面是别人给我的代码: package com.bootdo; public class Test { public static void main(String[] args) { System. ...

  10. C语言自学网官方微信相关功能使用方法

    一.微信扫描关注微信公众账号(C语言自学网),我们会不定时更新关于编程的技术文章和相关资讯,了解大佬的成长之路. 二.回复“C语言学习资料”,将显示由我们精心整理的全套C语言学习资料的下载地址及链接. ...