zoukankan      html  css  js  c++  java
  • java学习笔记(day17)

    0x00 接口

    接口就是一种公共的规范标准。
    只要符合规范标准,就可以大家通用。

    1.接口的格式

    接口就是多个类的公共规范。
    接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。
    如何定义一个接口的格式:
    public interface 接口名称{
    //接口内容
    }

    备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java --> .class。

    如果是java7,那么接口中可以包含的内容有:

    1. 常量
    2. 抽象方法

    如果是java8,还可以额外包含有:
    3. 默认方法
    4. 静态方法

    如果是Java9,还可以额外包含有:
    5. 私有方法

    2.接口的抽象方法定义

    在任何版本的Java中,接口都能定义抽象方法。
    格式:
    public abstract 返回值类型 方法名称(参数列表);

    注意事项

    1. 接口当中的抽象方法,修饰符必须是两个固定的关键字:public abstract 。
    2. 这两个关键字修饰符,可以选择性地省略。
    3. 方法的三要素,可以随意定义。

    3.接口的抽象方法使用

    接口使用步骤:

    1. 接口不能直接使用,必须有一个“实现类”来“实现”该接口。
      格式:
      public class 实现类名称 implements 接口名称 {
      //...
      }
    2. 接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。
      实现:去掉abstraact关键字,加上方法体大括号。
    3. 创建实现类的对象,进行使用。

    注意事项
    如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类。

    4.接口的默认方法定义

    从Java8开始,接口里允许定义默认方法。
    格式:
    public default 返回值类型 方法名称(参数列表){
    方法体
    }

    备注:接口当中的默认方法,可以解决接口升级的问题。

    1. 接口的默认方法,可以通过接口实现类对象,直接调用。
    2. 接口的默认方法,也可以被接口实现类进行覆盖重写。

    5.接口的静态方法定义和使用

    从Java8开始,接口当中允许定义静态方法。
    格式:
    public static 返回值类型 长发名称(参数列表){
    方法体

    提示:就是将abstract或者default换成static即可,带上方法体。

    注意事项:不能通过接口实现类的对象来调用接口当中的静态方法。

    正确用法:可以通过接口名称,直接调用其中的静态方法。

    格式:
    接口名称.静态方法名(参数);


    问题描述:
    我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。
    但是这个共有方法不应该让实现类的使用,应该是私有化的。

    解决方法:
    从Java9开始,接口当中允许定义私有方法 。

    1. 普通私有方法,解决多个默认方法之间重复代码问题。
      格式:
      private 返回值类型 方法名称(参数列表){
      方法体
      }

    2.静态私有方法,解决多个静态方法之间重复代码问题。
    格式:
    public static 返回值类型 方法名称(参数列表){
    方法体


    6.接口的常量定义和使用

    接口当中也可以定义“成员变量”,但是必须使用public static final 三个关键字进行修士。
    从效果上看,这其实就是接口的【常量】。
    格式:
    public static final 数据类型 常量名称 = 数据值;

    备注:
    一旦使用final关键字进行修饰,说明不可改变。

    注意事项:

    1. 接口当中的常量,可以省略public static final,注意:不写也照样是这样。
    2. 接口当中的常量,必须进行赋值,不能不赋值。
    3. 接口中常量的名称,使用完全大写的字母,用下划线进行分隔。(推荐命名规则)

    7.小结

    在Java 9+版本中,接口的内容可以有:

    1. 成员变量其实是常量,格式:
      【public】【static】【final】数据类型 常量名称 = 数据值;
      注意:
      常量必须进行赋值,而一旦赋值不能改变。
      常量名称完全大写,用下划线进行分隔。

    2. 接口中最重要的就是抽象方法,格式:
      【public】【abstract】返回值类型 方法名称(参数列表);
      注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。

    3. 从Java 8开始,接口里允许定义默认方法,格式:
      【public】default 返回值类型 方法名称(参数列表){ 方法体 }
      注意:默认方法也可以被覆盖重写

    4. 从Java 8开始,接口里允许定义静态方法,格式:
      【public】static 返回值类型 方法名称(参数列表){ 方法体 }
      注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法。

    5. 从Java 9开始,接口里允许定义私有方法,格式:
      普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 }
      静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 }
      注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。

    文章未经本人允许,禁止转载。 有技术问题,可加好友讨论。 联系方式:QQ:MjgxMjMxODAzNQ== 微信:bzNycjByLVhpYW9taW5n
  • 相关阅读:
    FEniCS 1.1.0 发布,计算算术模型
    Piwik 1.10 发布,增加社交网站统计
    淘宝褚霸谈做技术的心态
    CyanogenMod 10.1 M1 发布
    Druid 发布 0.2.11 版本,数据库连接池
    GNU Gatekeeper 3.2 发布
    Phalcon 0.9.0 BETA版本发布,新增大量功能
    EUGene 2.6.1 发布,UML 模型操作工具
    CVSps 3.10 发布,CVS 资料库更改收集
    Opera 移动版将采用 WebKit 引擎
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/13823397.html
Copyright © 2011-2022 走看看