当前位置: 首页 > news >正文

jdk 1.8新特性--接口增强

接口中的属性默认有:static final 修饰符修饰;

定义的方法默认是抽象方法;在jdk1.8中可以写默认方法和静态方法;

一、默认方法

允许在接口中提供方法的默认实现,这样实现类就不必实现这些方法,除非需要自定义行为。这一特性通过在方法前加上 default 关键字来实现。

定义语法: 

interface InterfaceName{​ default returnType methodName(arg-list){ }}

默认的访问修饰符是public

interface A{default void test(){System.out.println("Default Method test in A");}
}

两大优势:

  1. 可以让接口更优雅的的升级,减少使用人员操作的负担;

    不必随着接口方法的实现,从而修改实现代码,因为默认方法在子类用可以不用实现;

  2. 可以让实现类中省略很多不必要的方法的空实现;

 

接口继承与默认方法的冲突:

例如:一个类C,实现两个接口A、B,其中接口B继承接口A

interface A{default void test(){System.out.println("A");}
}interface B extends A{default void test(){System.out.println("B..");}
}class C implements A,B{public static void main(String[] args) {C c=new C();c.test();}
}//运行结果:
B..

方法调用的判断规则:

  • 类中声明的方法优先级最高:类或父类中声明的方法要高于任何默认方法的优先级;
  • 如果无法根据第一条进行判断,那么子接口的优先级更高;例如:B接口继承了A接口,那么B接口就比A接口更具体,优先级更高;
  • 最后,- 还是无法判断,那么继承了多个接口的类,必须通过重写方法来确定方法的调用;

二、静态方法

静态方法属于接口本身,而不是实现类。静态方法可以直接通过接口名调用。

interface InterfaceName{static returnType methodName(arg-list){//代码实现}
}// 访问
InterfaceName.methodName();

注意,接口中的静态方法,只能使用当前接口的名字来调用

三、私有方法 

从Java 9开始,接口中还可以定义私有方法。

  • 私有方法可以用于重用代码,避免重复实现逻辑。
  • 私有方法只能在接口内部被调用,不能被实现类或其他外部类访问。 
public interface MyInterface {private void privateMethod() {System.out.println("This is a private method.");}default void usePrivateMethod() {privateMethod();}
}


http://www.mrgr.cn/news/69051.html

相关文章:

  • 算法复杂度——大O表示法
  • Python小游戏24——小恐龙躲避游戏
  • 动态内存管理(c语言)
  • 基于普中51单片机开发板的电子门铃设计( proteus仿真+程序+设计报告+讲解视频)
  • 数据仓库面试题集离线实时
  • 大模型时代,呼叫中心部门如何建设一套呼出机器人系统?
  • Node.js 常用工具util、文件系统使用介绍 (基础介绍 七)
  • C语言多维数组抽象理解:切格子思维
  • Go 中的泛型,日常如何使用
  • D63【python 接口自动化学习】- python基础之数据库
  • 随身 WiFi 锁频段、频点和小区提升网速
  • 24-11-9-读书笔记(三十二)-《契诃夫文集》(六)上([俄] 契诃夫 [译] 汝龙)药品是甜的,真理是美的,咖啡是苦的,生活是什么啊?
  • Linux 零拷贝技术
  • VScode中使用Cmake遇到的问题及其解决方法[最全+亲测有效]
  • 食品加工厂废水处理设备结构与功能
  • 【梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam
  • Chromium 中chrome.tabs扩展接口定义c++
  • 青少年编程与数学 02-003 Go语言网络编程 19课题、Go语言Restful编程
  • 自动驾驶系列—DAI起步提醒功能:让你不再错过每一个绿灯
  • C++入门基础(二)
  • STM32单片机WIFI语音识别智能衣柜除湿消毒照明
  • 共享汽车管理:SpringBoot技术实现指南
  • AP8106低电压升压芯片
  • 黄仁勋:AI数据中心可扩展至百万芯片 性能年翻倍,能耗年减2-3倍
  • 初始C++(下)-- 引用、内联函数、auto关键字、基于范围的for循环、空指针nullptr
  • torch.full函数介绍