JDK1.8新特性---接口中的默认方法与静态方法

MOSFET高频响应实战:如何用LTspice仿真内部电容效应(附模型文件) 本文深入解析MOSFET高频响应中的内部电容效应,通过LTspice仿真工具详细展示如何提取模型参数并优化高频特性。从栅极相关电容到结电容的物理本质,再到实战案例中的开关损耗分析和频率响应扫描,提供全面的设计优化方法,帮助工程师有效应对高速开关电路中的电容挑战。 阅读详情

一、默认方法

在JDK1.8之后,接口中可以有默认方法

interface MyInterface1 {
    default String getName(){
        return "哈哈哈";
    }
  }

但是这会出现一个问题,就是若一个类它即继承另一个类,又实现了一个接口,而那个接口里面的默认方法的方法名和参数与继承类中的方法名和参数相同,那最后调用方法是到底是调用谁的方法。这里就提到一个原则:

  • 接口中默认方法的“类优先”原则
  • 若一个接口中定义了一个默认方法,而另一个父类或接口中又定义了一个同名的方法时
  • 1.选择父类中的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法 会被忽略。
  • 2.接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称个参数列表 的方法(不管方法是否是默认方法),那么必须覆盖该方法来解决冲突。
public class MyClass {
    public  String getName(){
        return "嘿嘿嘿";
    }
}
interface MyInterface1 {
    default String getName(){
        return "哈哈哈";
    }
}
class SubClass1 extends MyClass implements MyInterface1{
    public static void main(String[] args) {
        SubClass1 subClass1 = new SubClass1();
        String name = subClass1.getName();
        System.out.println(name);
    }
}

在这里插入图片描述
可以看到,结果输出的是嘿嘿嘿,调用的是父类中的方法。

下面,我们再来看另外一种情况:
如果一个类分别实现了两个接口,但是其中一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称个参数列表 的方法(不管方法是否是默认方法),那么必须覆盖该方法来解决冲突,不然就会报错。
在这里插入图片描述
我们可以看到代码出现了错误,以下是解决错误之后的代码

interface MyInterface1 {
    default String getName(){
        return "哈哈哈";
    }
}
interface MyInterface2 {
    default String getName(){
        return "呵呵呵";
    }
}
class SubClass2  implements MyInterface1,MyInterface2{
    public static void main(String[] args) {
        SubClass2 subClass2 = new SubClass2();
        String name = subClass2.getName();
        System.out.println(name);
    }

    @Override
    public String getName() {
        return MyInterface1.super.getName();
    }
}

而结果如下图:
在这里插入图片描述

二、静态方法

在JDK1.8之后,接口中可以有静态方法

interface MyInterface1 {
    default String getName(){
        return "哈哈哈";
    }
    static String show(){
        return "Hello World!";
    }
}
无人驾驶小车调试笔记(六)-- 车轮校准 简介:小车的动力完全来自于两个电机带动的车轮,在理想状态下,给两个电机同样的驱动参数,两个车轮会以同样的转速带动小车直线行驶,而实际情况是每个电机可能都会有个体差异,也就是说给予同样的驱动参数,表现出的转动速度会有些许不同,两个轮子的差速会导致车辆拐弯,后果就是给了直线行驶的控制命令,但是车走着走着就偏离了原本的方向,所以在开始控制之前,我们需要先平衡两个车轮的转速,保证在同样驱动参数下,两个车轮转速大致相同,也就是可以走直线。 车轮校准分为3步,测试、调整后再测试、保存参... 阅读详情

相关推荐

A类功率放大器

在A类放大器中,导通角是完整的360°或100%的输入信号,而在其他类别的放大器中,晶体管在一个较小的导通角内导通。通过在输出级使用两个互补的晶体管,其中一个晶体管是NPN或N通道类型,而另一个晶体管是PNP或P通道(互补)类型,以所谓的 "推挽 "配置连接,可以获得比A类放大器更大的功率输出和效率。这种类型的电路效率很低(低于30%),而且对直流电源的消耗很大,输出的功率却很小。由于我们感兴趣的是向负载提供最大的交流功率,同时从电源中消耗尽可能少的直流电,所以我们主要关注的是放大器的 "转换效率"。

LSW20072007的博客 2470

一、JDK1.8—接口支持静态方法和默认方法

JDK1.8之前的接口的定义和限制 接口不能用于实例化对象。 接口没有构造方法。 接口中所有的方法必须是抽象方法。 接口不能包含成员变量,除了 static 和 final 变量。 接口不是被类继承了,而是要被类实现。 接口支持多继承。 JDK1.8接口支持静态方法和默认方法 默认方法主要优势: 1、提供了一种扩展接口的方法,而不破坏现有代码。 如果一个已经投入使用的接口需要扩展...

wxd_1024的博客 4150

从AXI到CHI:深入解析基于Credit的流量控制如何优化NoC设计

本文深入解析了从AXI握手式流控到CHI基于Credit的流量控制机制的演进。通过对比传统流控的瓶颈,详细阐述了Credit机制如何通过信用预分配和记账系统,有效解决FIFO气泡、时序收敛等难题,从而优化NoC设计的带宽利用率、降低延迟并提升系统可扩展性。

weixin_29227585的博客 522

jdk1.8新特性之接口中的默认方法

1. 在java接口中除常规抽象方法外可以声明default/static 的方法(必须有方法体) public interface TestDefaultInterface01 { /** * jdk 1.8 新特性之 接口默认方法 * 声明普通接口方法 * @param name * @return */ void say(...

weixin_40510917的博客 601

电磁场可视化

电磁场可视化 如题,做了电磁场可视化这么久了,也是颇有些心得了,简单描述一下怎么做这个项目的。 开始时是从最基本的OpenGL开始做的,必不可少的翻了许多的文献,后来是直接在unity中做,发现效果挺好,而且可控性强好多。反复琢磨后,发现可视化的渲染,有几种思路,第一就是用linerender,画线的方法,另一种就是用shader。 第一种我通过unity自带的linewave插件可以做到 详细的就是,linewave插件可以轻松画出曲线等,并且可以添加碰撞,控制频率幅度长度等一切的条件数值,而且令人惊喜

weixin_43979140的博客 1672

用5毫欧采样电阻实现高精度电流检测?数字可调电源控制板的硬件设计陷阱

本文深入探讨了在数字可调电源控制板设计中,如何利用5毫欧采样电阻实现高精度电流检测。从微小信号放大电路设计、采样电阻布局与热管理,到电源切换与电池管理电路优化,提供了全面的硬件设计解决方案和实用技巧,帮助工程师规避常见设计陷阱,提升系统性能。

wdx0123456的博客 1031

JDK1.8 新特性(一)【默认方法、静态方法和Lambda表达式】

JDK8新特性之接口静态方法、默认方法、Lambda表达式

功不唐捐,玉汝于成 556

nRF52811墨水屏时钟DIY:从全刷到局刷的实战改造指南(附完整代码)

本文详细介绍了如何将基于nRF52811的墨水屏时钟从耗电的全屏刷新模式改造为高效的局部刷新模式。通过剖析全刷与局刷的原理差异,提供了从工程架构、驱动层适配到应用层逻辑重构的完整实战指南,并附上关键代码示例。改造后,设备功耗显著降低,续航大幅提升,同时解决了视觉闪烁问题,是DIY低功耗墨水屏应用的实用参考。

weixin_29194693的博客 356

JAVA---jdk1.8之后的接口(接口中定义默认方法和静态方法,私有方法)

JAVA—jdk1.8之后的接口(接口中定义默认方法和静态方法) 从jdk1.8开始,接口里允许定义默认方法 格式:public default 返回值类型 方法名(参数列表){ 方法体 } public interface Demo1 { public default void method2(){ System.out.println("Hello"); } }...

qq_42488087的博客 5566

S7-1200与ABB机器人进行SOCKET通信的具体方法示例

S7-1200与ABB机器人进行SOCKET通信的具体方法示例

Robot_PLC_HMI_Automation 3298

37.华为路由器:loopback(本地回环)接口的作用

本地环回接口(或地址),亦称回送地址(loopback address)。 此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途: 1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址 ,管理员会使用该地址对路由器远程登录(telnet ),该地址实际上起到了类似设备名称一类的功能。 但是通常每台路由器上存在众多接口和地址,为何不从当中随便挑选一个呢 ? 原因如下:由于

迷逝 3万+

JDK1.8新特性详解

函数式接口是一种只包含一个抽象方法的接口。函数式接口通常作为函数式编程和Lambda表达式的基础。Java 8为常见的函数式编程场景提供了专门的函数式接口,比如,和等。:断言型接口,输入一个参数T,返回一个布尔值,用于执行一些判断逻辑。:函数型接口,输入一个参数T,返回一个结果R,用于执行一些转换逻辑。:消费型接口,输入一个参数T,表示消费掉这个参数,执行一些操作但没有返回值。:供给型接口,返回一个数据T,用于执行一些数据生成操作。Filter:过滤,用于过滤出满足条件的元素。Map。

weixin_44251099的博客 3975

[STC32G144K246入门第六步]DAC驱动

本文摘要介绍了STC32G144微控制器内置的12位DAC模块特性与应用。该芯片集成双通道独立DAC,需通过内部运放缓冲后从P0.7/P5.0引脚输出,支持音频处理、波形生成等应用场景。重点阐述了DAC的R-2R梯形网络工作原理、关键性能指标(12位分辨率、转换速度等)及编程配置方法,包括频率设置、寄存器操作和运放引脚配置。文中还提供了32点正弦波表示例和初始化代码,强调参考电压稳定性对输出精度的重要影响。

sinat_58149788的博客 142

JDK1.8新特性之接口中的静态方法与默认方法

一. 新特性概述概述 在Jdk8之前,Interface之中可以定义变量和方法,变量必须为public static final的,由于实现接口中的方法必须要重写它的方法,而子类继承抽象类必须重写其所有的抽象方法,所以接口中的方法必须隐式为public abstract的。JDK1.8中允许我们在接口中定义static方法和default方法 二. 代码示例 Jdk8之前,接口中只能有pub...

calm_encode的博客 853

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JDK1.8新特性总结 - 篇五(接口中的默认方法与静态方法)

一. 简介 jdk1.8以前,只允许在接口中定义两种类型的数据:全局静态变量和抽象方法。但在jdk1.8中引入了两个全新的概念: 1. 在接口中可以使用default关键字修饰非抽象方法。 2. 接口内可以编写静态方法,并且可以被实现。 二. 接口中的默认方法 这里需要介绍几种场景: 1. 若一个类既继承了某个...

爱喝咖啡的程序员的博客 653

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java之JDK1.8新特性五(接口中的默认方法与静态方法)

1、默认方法 1.1 概述 Java 8中允许接口中包含具有具体实现的方法,该方法称为“”默认方法“”,用default关键字修饰 示例代码如下: interface Inter{ void show();//抽象方法 default void method() { System.out.println("默认方法"); } } 1.2 作用 供实现类调用或者实现类重写 1.3 说明 ...

dpc的博客 404

jdk1.8新特性 接口中的默认方法与静态方法

    Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用default关键字修饰。 interface MyInterface<T>{ T cs(int a); default String getResult() { return "1"; } }接口默认方法的”类优先”原则    若一个接口中定义了一个默认方法,而另外一...

Keith003的博客 532

JDK1.8新特性-lambda表达式与接口中的默认方法和静态方法

Lambda表达式(也称为闭包)Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据。Lambda表达式用于简化Java中接口式的匿名内部类。函数式接口就是一个具有一个方法的普通接口。像这样的接口,可以被隐式转换为lambda表达式。(注意:当返回值只有一句话时,可以不使用大括号,如果写return必须带大括号。默认方法与静态方法并不影响函数式接口的契约,可以任意使用。(参数1,参数2...) -> { ... }我爱学习English。我爱学习English。

xintaitehao的博客 709

JDK1.8新特性(三)使用详情

继JDK1.8新特性(一),JDK1.8新特性(二)后继续学习JDK1.8新特性。 【7】Optional 类 final修饰的Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念。并且可以避免空指针异常。 常用方法: Optional.of(T t)

小小默:进无止境 1958

JDK1.8 新特性

1. JDK1.8新特性 2. JDK1.8新特性简介 2.1 Lambda表达式 什么是Lambda表达式 Lambda是一个匿名函数, 我们可以把Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递).可以写出更加简洁,灵活的代码. 作为一种更加紧凑的代码风格, 使java的语言表达能力得到了提升. 格式就是(方法参数)->方法体箭头函数表示法 如果没有方法参数, 小括号不能省略, ()->方法体 如果方法参数是一个的话, 小括号可以省略也可以带着, (m)->方法体或

啊策策大数据社区 237

jdk1.8新特性-最新最全

一、引言 jdk1.8出来已经一段时间了,现在12也已经出来了,越来越多的公司已经在使用了jdk1.8的新特性了,1.8和1.6相比有很大层次的特性的提升。从代码运行的性能、方法的简单化都有了很大层次的提升。 二、新特性 在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,...

qq_38758265的博客 1315

JDK.1.8新特性

阿斯頓

czx1254678152的博客 206

了解Java抽象类和接口

进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用。

AE_BD的博客 852

面向对象高级之接口

面向对象高级之接口 接口 ​ 接口(interface)是一种特殊的抽象类,本质上不是一个类,里面只能包含常量和方法的定义(不允许实现),接口就是一套未实现方法的集合。 声明语法 [修饰符] 接口名称{ ​ [常量定义] ​ [抽象方法的定义] } 从以上表现来看,接口中不存在像普通类一样的属性,以及普通方法,因此接口实际上就是一套标准,既然是标准,那就必然存在实现,java中的类可以实现多个接...

努力耕田的牛 186

【Java基础|第三十六篇】JDK1.8中的新特性

【JDK1.8新特性摘要】150字 JDK1.8引入三大核心特性:1.接口方法支持默认实现,通过default/static方法解决接口升级的兼容性问题;2.Lambda表达式实现行为参数化,采用(参数)->函数体的简洁语法,配合函数式接口(@FunctionalInterface)提升代码灵活性;3.方法引用(::操作符)作为Lambda的语法糖,支持静态方法、实例方法、构造方法的直接引用。这些特性共同推动了Java函数式编程能力,与Stream API结合显著简化集合操作,使代码更简洁高效。

m0_74177281的博客 1174

JDK1.8新特性

JDK1.8新特性 核心就是Lambda表达式和Stream Api 简介:1.速度更快 ​ 2.代码更少(新的表达式Lambda) ​ 3.强大的StreamApi ​ 4.便于并行 ​ 5.最大化减少空指针异常 (Optional) 1.Lambda 表达式 ​ Lambda表达式是一个匿名函数 ,我们可以吧Lambda表达式理解为是一段可以传递的代码(将代码像...

yao05199的博客 236

JDK1.8新特性之方法函数式接口+默认方法

Function interface 接口就是一个有且只有一个抽象方法 但是可以有非抽象方法 的接口 1.可以用lambda表达式 2.也可以用方法的引用 其实在jdk8之前已经有部分的函数式接口 如: Java.lang.Runnable Java.util.Comparator Java.IO.FileFilter 在jdk8以后,新添加的一个函数式接口 Java.util.Function,...

zhany15188773139的博客 523
上一篇: JDK1.8新特性---Optional容器类
下一篇: JDK1.8新特性--新时间与日期API
suixinghero
博客等级 码龄7年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值