JDK8以后接口的新特性

news2024/9/22 7:40:47

JDK8以前,接口内只能定义抽象方法;

JDK8,接口内允许定义默认方法、静态方法;

JDK9,接口内允许定义私有方法

default:默认方法

public interface Essay01 {

    /**
     * 在接口内定义默认方法
     */
    public default void show(){
        System.out.println("接口Essay01内定义的show()方法......");
    }
}

需要注意以下3点:
(1)接口内定义的默认方法,public可以省略;
(2)默认方法不要求实现类必须重写,重写的话,default需要去掉;
在这里插入图片描述
在这里插入图片描述

(3)如果说接口继承的多个接口,有重名的默认方法,该接口必须重写父类重名的默认方法
在这里插入图片描述

static:静态方法

public interface Essay01 {

    /**
     * 接口内的抽象方法
     */
    void add();

    /**
     * 在接口内定义静态方法
     */
    public static void show() {
        System.out.println("接口Essay01内定义的show()方法......");
    }
}

需要注意以下2点:
(1)接口内的静态方法,实现类不能覆写;不能覆写不是说覆写会报错,而是实现类如果定义了和接口静态方法一样的方法,是表明子类也定义了一个静态方法,不算是覆写;
在这里插入图片描述
(2)接口内的静态方法,只能通过接口名.方法名的方式来访问,不能通过实现类或者对象名.方法名的方式来访问
在这里插入图片描述

private:私有方法

public interface Essay01 {

    /**
     * 在接口内定义默认方法
     */
    public default void add(){
        log1();
        System.out.println("接口Essay01内定义的add()方法......");
    }

    /**
     * 在接口内定义静态方法
     */
    public static void show() {
        log2();
        System.out.println("接口Essay01内定义的show()方法......");
    }

    /**
     * 在接口内定义私有方法
     */
    private void log1(){
        System.out.println("记录日志信息......");
    }

    /**
     * 在接口内定义静态私有方法
     */
    private static void log2(){
        System.out.println("记录日志信息......");
    }
}

接口内使用私有方法的好处有两点:

1)简化代码:可以把接口内default()方法之间、static()之间方法代码相同的部分抽取出来,成为一个私有方法,后面有需要可以直接调用。默认方法调用私有方法,静态方法调用私有静态方法。

2)安全规范:私有方法不能被外界访问,只能在接口内使用,安全且规范

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

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

相关文章

CMU - FarPlanning 代码速读

https://github.com/MichaelFYang/far_planner https://www.cmu-exploration.com/ 系统结构 Far Planner 属于 High-level planning module,进行全局规划,找到可行路径;将 way_point发布给 Local planner和 path following KeyPoint Local-la…

帮公司面了个要21K的测试,结果.....

深耕IT行业多年,我们发现,对于一个程序员而言,能去到一线互联网公司,会给我们以后的发展带来多大的影响。 很多人想说,这个我也知道,但是进大厂实在是太难了,简历投出去基本石沉大海&#xff0…

arm嵌入式系统下,手把手教你移植pppoe拨号客户端,使用pppoe拨号上网

移植pppoe拨号客户端 一、概述二、移植过程1、内核配置2、pppd工具编译3、pppoe工具编译 三、配置pppoe参数四、创建节点信息五、pppoe服务器搭建 一、概述 PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协…

Windows GUI自动化控制工具之python uiAutomation

对 Windows GUI进行自动化控制的工具有很多,比如pywinauto、pyautogui、pywin32、Autoit、airtest、UIAutomation等,UI Automation API是微软提供的自动化框架,可在支持 Windows Presentation Foundation (WPF) 的所有操作系统上使用&#xf…

Niagara—— Niagara Editor界面

目录 一,菜单栏 二,工具栏 三,预览面板 四,参数面板 五,系统总览面板 六,暂存区面板 七,选择面板 打开Niagara Editor: 双击Niagara发射器或系统;右击Niagara发射…

Qt--事件分发器

写在前面 在 Qt 中,事件分发器(Event Dispatcher)是一个核心概念,用于处理 GUI 应用程序中的事件。事件分发器负责将事件从一个对象传递到另一个对象,直到事件被处理或被取消。 每个继承自QObject或QObject的类都可以在本类中重写bool even…

基于 Amazon API Gatewy 的跨账号跨网络的私有 API 集成

一、背景介绍 本文主要讨论的问题是在使用 Amazon API Gateway,通过 Private Integration、Private API 来完成私有网络环境下的跨账号或跨网络的 API 集成。API 管理平台会被设计在单独的账号中(亚马逊云科技提供的是多租户的环境),因为客观上不同业务…

生于零售的亚马逊云科技,如何加速中国跨境电商企业出海?

导读:跨境电商进入精耕细作的新阶段。 作为中国企业出海的重要领域之一,近几年跨境电商行业处在快速发展中。商务部数据显示,2022年中国跨境电商出口达1.55万亿,同比增长11.7%。2023年1-2月,跨境电商进出口总额同比增长…

【wpf】视觉树上找元素的注意事项

前言 我们通过 VisualTreeHelper类 可以在视觉树上找元素,下面提供几个封装好的方法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media; using Sy…

分析| Flutter 3.10版本有哪些变化?

Flutter是Google推出的一款用于构建高性能、高保真度移动应用程序、Web和桌面应用程序的开源UI工具包。Flutter使用自己的渲染引擎绘制UI,为用户提供更快的性能和更好的体验。Flutter还提供了丰富的构建工具、库和插件,使开发人员能够更快地构建应用程序…

从浅入深理解序列化和反序列化

文章目录 什么是java序列化什么情况需要使用 Java 序列化为什么要序列化序列化和反序列化过程如下RPC 框架为什么需要序列化序列化用途序列化机制可以让对象地保存到硬盘上,减轻内存压力的同时,也起了持久化的作用序列化机制让Java对象可以在网络传输 实…

LINUX 提权 脏牛CVE-2016-5195

这里写复现过程,不写原理 Linux内核 > 2.6.22(2007年发行,到2016年10月18日才修复) 靶场环境是vluhub上的。网卡自己配置好 nmap扫一下 80端口开的,上去 52.136 再扫 1898开放 访问开干 是个cms msf上线找这…

【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(opentsdb格式)

VictoriaMetrics单机版支持以opentsdb格式的数据写入包含linux形式和postman形式,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 注意,如果支持opentsdb协议需要在启动单机版VictoriaMetrics的时候加上opentsdbH…

一、尚医通微信登录

文章目录 一、登录需求1、登录需求 二、微信登录1、OAuth21.1OAuth2解决什么问题1.1.1 开放系统间授权1.1.2图例1.1.3方式一:用户名密码复制1.1.4方式二:通用开发者key1.1.5方式三:颁发令牌 1.2 OAuth2最简向导1.2.1 OAuth主要角色1.2.2最简向…

就业内推 | 国企招运维、网安,五险一金全额缴,最高15k

01 北京安信创业信息科技发展有限公司 🔷招聘岗位:网络运维岗 🔷职责描述: 1、负责北区数据中心、总部数据中心、部本部、21家在京直属事业单位内网网络系统的日常运行维护工作。 2、负责网络故障的应急处置。 3、负责网络系统…

决策树及决策树的划分依据(ID3、C4.5、CART)

一、决策树是什么? 决策树是一种基于树状结构的机器学习算法,用于解决分类和回归问题。它是一种自上而下的递归分割方法,通过对特征空间的递归划分来构建一个树形模型,用于进行预测和决策。在决策树中,每个内部节点表…

Redis概述

前言 为什么要使用Redis? ​ 如果熟悉JVM底层的话,就能了解Java程序的运行大多数都是基于对内存的操作,读取、并更、清理,并同时保证数据的可靠性。即使是数据库,例如MySQL几乎都是基于对缓冲区的操作,只是通过后台…

(常见)数据模型

文章目录 数据模型概述一、数据模型概要1.模型、建模与抽象2.数据模型3.两类数据模型 二、数据库模型的组成要素1.数据结构2.数据操作3.数据的完整性约束 三、概念模型1.概要2.基本概念3.概念模型的表示方法 常用数据模型一、层次模型1.简介2.数据结构3.数据操纵与完整性约束4.…

二叉搜索树中第K小的元素

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出:1 示例 2: 输入&am…

List、Set、Map的区别?

List 是一个有序集合,里面可以存储重复的元素Set 是一个不能存储相同元素的集合Map 是一个通过键值对的方式存储元素的,键不能重复 Java 容器分为Collection 和Map 两大类,Collection 集合的子接口有Set、List、Queue 三种子接口。其中&#…