JDK8以后接口的新特性

news/2024/10/30 23:24:02/

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.ppmy.cn/news/78452.html

相关文章

SSM编程---Day 01

目录 一、Maven简介 (一)软件开发中的阶段 (二)Maven能做什么 (三)没有使用maven怎么管理依赖 (四)什么是maven (五)maven中的概念 二、Maven的核心概…

移动应用架构解析:用户界面层、业务逻辑层、数据访问层

移动应用的成功离不开一个良好的架构设计,在移动应用开发过程中,合理的层次结构对于应用的可维护性、可扩展性和可测试性至关重要。 移动应用的常见层次结构包括用户界面层、业务逻辑层、数据访问层,但是随着跨平台开发框架的不断发展&#…

媒体传输协议的演进与未来

音视频应用近年来呈现出迅猛的发展趋势,成为互联网流量的主要载体,其玩法丰富,形态多样,众多繁杂的媒体传输协议也应运而生。LiveVideoStackCon 2022北京站邀请到快手传输算法负责人周超,结合快手在媒体传输上的优化与…

算法分析基础

问题:如何比较不同算法的性能? 分析算法的运行时间 算法分析的原则 归纳基本操作 如:运算、赋值、比较 统一机器性能 假设基本操作代价均为1 统一机器性能后,算法运行时间依赖于问题输入规模与实例 相同输入规模&#xff0c…

金领冠520解密母乳源代码,助推婴配粉中国式现代化高速发展

又是一年520,又是一个“全国母乳喂养宣传日”。 1990年5月10日,为保护、促进和支持母乳喂养,更好地实行优生优育,原中华人民共和国国家卫生部召开新闻发布会,确立每年5月20日为“全国母乳喂养宣传日”。 那时&#x…

Jenkins发送邮件、定时执行、持续部署

集成Allure报告只需要配置构建后操作即可。但如果是web自动化,或是用HTMLTestRunner生成报告,构建后操作要选择Publish HTML reports,而构建中还要添加Execute system Groovy script插件,内容: System.setProperty(&q…

effective c++ 11 operator= 处理自我赋值

effective c 11 operator 处理自我赋值 我们知道复制构造函数和赋值运算符的区别是赋值构造函数用于创建一个新的对象,而赋值运算符用于给一个已经存在的对象重新赋值。 因此赋值运算符就可能存在把自己赋值给自己的情况,本节就是专门讨论这个场景的。…

MySQL(用户管理)

文章目录 1 用户1.1 用户信息1.2 创建用户1.3 删除用户1.4 修改用户密码 2 数据库的权限2.1 给用户授权2.2 回收权限 1 用户 1.1 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中 host: 表示这个用户可以从哪个主机登陆,如果是l…