Java—JDK8新特性—接口增强

news2024/11/20 18:45:36

目录

JDK引言

1.相关组织和规范

1.1 JCP (Java Community Process)

1.2 JSR (Java Specification Requests)

1.3 JEP (Java Enhancement Proposal)

JDK8新特性

1.接口增强

1.1 默认方法

1.1.1 为什么引入默认方法

1.1.2 如何使用默认方法

1.1.3 如何调用默认方法

1.1.4 默认方法案例

1.1.5 默认方法总结

      1.2 静态方法

1.2.1 如何使用静态方法

1.2.2 如何调用静态方法       

1.2.4 静态方法案例

1.2.5 静态方法总结


JDK引言

1.相关组织和规范

1.1 JCP (Java Community Process)

        JCP(Java Community Process)由世界上各个为Java 发展操心的人士组成的社区,参与定义Java新特性和新版本制定标准的组织。

1.2 JSR (Java Specification Requests)

        JSR(Java Specification Requests) Java语言规范请求文档,你可以对Java提出新的要求,然后Java相关的组织投票决定是否通过,通过后就将这个要求写入JSR中,并且最终给出一个开源的实现。

1.3 JEP (Java Enhancement Proposal)

        JEP(Java Enhancement Proposal),Java增强建议,收集大家对于JDK的建议,起草增强Java哪些功能的方案,为JDK新版本发布及相关工作指定路线。


JDK8新特性

        官网提供网址:JDK 8 Features

 

接下来主要介绍

1.接口增强

        在JDK8中行增加了两个方法,一个是默认方法,一个是静态方法。

1.1 默认方法

        1.1.1 为什么引入默认方法

        在JDK 8以前接口中只能有抽象方法,这会存在以下问题:如果给接口新增抽象方法,所有实现类都必须重写这个抽象方法,从而不利于接口的扩展。

        方便接口的扩展

        1.1.2 如何使用默认方法

        使用关键字default 来定义,并且需要有方法的实现

/**
 * JDK8新特性 接口增强 默认方法
 */
public interface InterA {

    void show();

    void print();

    /**
     *  默认方法,使用default 关键字来定义,需要有方法的实现
     *  其子类可以去重写或者不去重写
     *      因为接口的默认方法实现类不必重写,可以直接使用,
     *      实现类也可以根据需求重写,
     *  方便了接口的扩展
     */

    default void run() {
        System.out.println("InterA 默认方法,使用default 关键字来定义,需要有方法的实现");
    }
}

        1.1.3 如何调用默认方法

        通过实例调用

        1.1.4 默认方法案例

先写两个实现类SubB 和 SubC ,并实现InterA接口

        其中SubB重写run()方法

              SubC不重写run()方法

public class SubB implements InterA{
    @Override
    public void show() {

    }

    @Override
    public void print() {

    }

    @Override
    public void run() {
        System.out.println("SubB 的 run方法");
    }
}
public class SubC implements InterA{
    @Override
    public void show() {

    }

    @Override
    public void print() {

    }
}

写一个测试类,进行测试

public class DefaultMethodTest {
    public static void main(String[] args) {
        //SubB 重写了run()
        InterA ia =new SubB();
        ia.run();

        //SubC 没有重写了run()
        InterA ia2 = new SubC();
        ia2.run();
    }
}

运行结果:

        1.1.5 默认方法总结

1.为什么引入默认方法: 方便接口扩展

2.如何使用默认方法:使用default 关键字来定义,需要有方法的实现

3.如何调用默认方法:通过实例调用

4.默认方法的使用细节:

        因为接口的默认方法实现类不必重写,可以直接使用,

        其实现类可以去重写或者不去重写,

        实现类也可以根据需求重写。

        


      1.2 静态方法

        1.2.1 如何使用静态方法

        修饰符 static 返回值类型 方法名(参数列表) {   
   方法体;  }

/**
 * JDK8中 接口中的静态方法
 */
public interface InterB {

    /**
     * 接口中的静态方法
     * 接口中的静态方法,其方法不能被子类重写,同时子类不能访问到接口的静态方法
     * 接口中的静态方法,只能被接口使用,子类是无法使用
     */
    public static void show() {
        System.out.println("接口中的静态方法");
    }

    /**
     * 默认方法 子类可以继承并且重写
     *
     */
    default void say() {
        System.out.println("接口中的默认方法");
    }


}

       1.2.2 如何调用静态方法       

        接口名称.静态方法名()

        1.2.4 静态方法案例

写一个测试类,进行测试

public class InterfaceStaticTest {
    public static void main(String[] args) {
        InterB.show();
      
    }
}

运行结果:

        1.2.5 静态方法总结

1.如何使用默认方法:

        修饰符 static 返回值类型 方法名(参数列表) {   
   方法体;  }

2.如何调用静态方法:接口名称.静态方法名()

3.静态方法的使用细节:        

        接口中的静态方法,其方法不能被子类重写,同时子类不能访问到接口的静态方法

        接口中的静态方法,只能被接口使用,子类是无法使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Radare2模拟shellcode运行

当我们在编写汇编时,可能有的时候你需要看看编译器中到底发生了什么。如果你正在排除shellcode出现的问题,你那么更需要耐心地、慎重地运行指令。 本文将探讨如何在x86_64的Ubuntu系统上模拟32位ARM shellcode。由于大多数笔记本电脑和工作站还没有运行…

单篇笔记涨粉8w,10秒视频播放超1000w,小红书最近在流行什么?

四月,小红书平台又涌现出哪些优质博主?品牌在投放种草方面有何亮眼表现? 为洞察小红书平台的内容创作趋势及品牌营销策略,新红推出4月月度榜单,从创作者及品牌两方面入手,解析月榜数据,为从业者…

iOS总结_UI层自我复习总结

UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是整个应用程序的一个抽象,负责存储应用程序的状态。根据第四…

SpringBoot访问静态资源

SpringBoot项目中没有WebApp目录,只有src目录。在src/main/resources下面有static和templates两个文件夹。SpringBoot默认在static目录中存放静态资源,而templates中放动态页面。 static目录 SpringBoot通过/resources/static目录访问静态资源&#xff…

怎么衡量纸白银走势图的强弱?

目前国内银行提供的纸白银交易基本实现了全天候连续的交易时间,但由于银行所提供的交易终端的技术分析功能有限,投资者在分析行情时绑手绑脚,因此小编建议大家可以尝试使用国际上主流的MT4的平台,作为观察国际银价走势的参考和技术…

在 Python 中获取昨天的日期

文章目录 在 Python 中获取昨天的日期Python 中的Date模块 在 Python 中获取昨天日期的示例 我们将通过多个示例介绍如何使用 Python 获取昨天的日期。 在 Python 中获取昨天的日期 Python 是一种高级语言,可用于数据科学和机器学习,以使用 Python 的数…

unity进阶学习笔记:消息框架

1 使用消息框架的目的 对于小型游戏,可能不需要任何框架,而是让各个游戏脚本直接相互通信。如要实现玩家受到攻击血量减少,通过玩家控制类向血条脚本发送消息减少血量。但是这样直接通信会导致各脚本通信关系记为复杂,并且每一个…

测试5年从中兴 15K 跳槽去腾讯 32K+16,啃完这份笔记你也可以

粉丝小王转行做测试已经是第5个年头,一直是一个不温不火的小职员,本本分分做着自己的事情,觉得自己的工作已经遇到了瓶颈,一个偶然的机会,获得了一份软件测试全栈知识点学习笔记,通过几个月的学习&#xff…

基于AT89C51单片机的计算器设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87759134?spm=1001.2014.3001.5503 源码获取 主要内容: 本次设计所提出的一种基于单片机技术的简易计算器的方案,能更好的解决计算机计算的问题,随着数字生活的到来,单片…

什么是皮安计?皮安表测试测量软件分享NS-SourceMeter

什么是皮安计 测量低直流电流,其需求常常远远超出数字万用表的功能。一般来说,数字万用表缺少测量低于100nA的电流所需的灵敏度。即使在较高的电流水平上,一个DMM的输入电压降(电压负担)高达几百毫伏,也不…

记录线上排查内存泄露问题

背景 记录一次云上排查内存泄露的问题,最近监控告警云上有空指针异常报出,于是找到运维查日志定位到具体是哪一行代码抛出的空指针异常, 问题分析 发现是在解析cookie的一个方法内,调用HttpServletRequest.getServerName()获取…

嵌入式软考备考_5 安全性基础知识

安全性基础知识 网安问题概述 被动攻击:监听(截获)。 主动攻击:主动破坏(中断篡改,病毒,ddos使得某个服务拒绝服务,重放攻击:黑客截取了正常用户输入用户名密码的加密…

Spark SQL

一、理解介绍 Spark SQL是spark中用于结构化数据处理的组件,可访问多种数据源,如连接Hive、MySQL,实现读写等操作。为什么要用spark去操作这些数据库呢?hive是一个基于Hadoop的数据仓库工具,hive的查询操作语句都要依…

走进两邻文化,全民禁种铲毒——禁毒公益大集活动

四月梧桐芳菲尽,五月槐花飘香来。五月的春风赋予了劳动者应有的权利和由衷的自豪感;五月的春雨浇灌了我们肩负禁毒工作的义务和责任的使命感。现在也是今年禁种铲毒工作的深入执行阶段,禁毒工作一直以来都是维护社会稳定的重要工作之一&#…

C语言函数大全-- s 开头的函数(4)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(4) 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意: strdup() 函数返回指向新分配的内存空间…

EasyMedia播放rtsp视频流(vue2、vue3皆可用)

之前发布过WebRtc播放rtsp视频流的博客,已经解决了web播放rtsp的问题,但WebRtc太耗内存,且需要命令行启动,对用户不太友好,虽然可以写脚本,让用户一键启动。这是无意间发现的另一种web播放rtsp视频流的办法…

相当Python程序员,选择培训班还是自学?我结合自己的经历谈谈看法

前几天我写了一篇文章,分享了自己当上程序员的经历。然后,我收到了很多小伙伴的提问,都在问同一个问题,即如何选择报培训班还是自学。今天,我结合自己的个人经历,来谈一下个人的看法。 我认为这个问题的第…

C/C++内存管理以及new/delete的底层实现。

一、C/C 内存分布 我们平常写代码所用的内存叫虚拟内存,是操作系统分配给每个进程的4G的内存,其中3G叫用户空间,1G叫内核空间。 我们所用的也就是3G的用户空间,如下图: 说明: 1. 代码段—可执行的代码/只…

【Linux】Linux学习之常用命令一

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

【嵌入式笔/面试】嵌入式软件基础题和真题总结——单片机与Linux

在学习的时候找到几个十分好的工程和个人博客,先码一下,内容都摘自其中,有些重难点做了补充! 才鲸 / 嵌入式软件笔试题汇总 嵌入式与Linux那些事 阿秀的学习笔记 小林coding 百问网linux 嵌入式软件面试合集 2022年春招实习十四面…