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

【Java】Java8接口中方法区别和使用

Java接口说明

jdk1.8之前接口只能是抽象方法。实现接口必须重写所有方法,比较麻烦。在java8中,支持default和static方法,这样,实现接口时,可以选择是否对default修饰的方法重写。

抽象方法

接口当中的抽象方法,修饰符必须是两个固定的关 键字:public abstract
这两个关键字修饰符,可以选择性地省略。
方法的三要素,可以随意定义。

public interface MyInterfaceAbstract{
//这是一个抽象方法
public abstract void methodAbs1();
//这也是抽象方法
abstract void methodAbs20:
// 这也是抽象方法
public void methodAbs3();
//这也是抽象方法 void methodAbs4();
}

default方法

当一个接口要添加一些新的公共逻辑,写了一个新的方法,那么所有的实现类都需要重写新方法,如果实现类太多,会非常麻烦。这时可以使用 default。
  • 接口中的default方法,可以写方法内容。
  • 接口中的default方法不强制实现类重写,不会影响到已有的实现类。
  • 接口的实现类,可以调用接口中的default方法。

static方法

  • 接口中的static方法,可以写方法内容。
  • 接口中的static方法不允许实现类重写(如果重写方法加上@Override会报错),不会影响到已有的实现类。
  • 接口中的static方法,可以直接通过接口名称调用,也可通过实现类名称调用。
public interface OrderService {/*** 接口中的变量都是 默认 public static final的,可以不用写这些修饰符*/String NAME = "static";/*** static方法,可以直接通过接口名称调用 static方法。* 比如 OrderService.selectName();**/static String selectStatic() {return NAME;}/*** default方法,可以写方法内容,实现类不强制重写 default方法。**/default String selectDefault() {return "default";}String selectOrder();
}public class OrderServiceImpl implements OrderService {@Overridepublic String selectOrder() {return "order";}
}public class InterfaceTest {public static void main(String[] args) {OrderServiceImpl orderServiceImpl = new OrderServiceImpl();//接口的实现类,可以调用接口中的default方法String user = orderServiceImpl.selectDefault();System.out.println("selectDefault()结果为:"+user);//static方法,可以直接通过接口名称调用,无需实例化String name = OrderService.selectStatic();System.out.println("OrderService.selectStatic()结果为:"+ name);}
}
http://www.lryc.cn/news/61250.html

相关文章:

  • WPF 控件库Live Charts 折线图多折线比较问题处理
  • 接口优化方案
  • 《商用密码应用与安全性评估》第二章政策法规2.1网络空间安全形式与商业密码工作
  • C#实现将文件、文件夹压缩为压缩包
  • 程序员跳槽,要求涨薪50%过分吗?
  • Java核心技术 卷1-总结-10
  • React Props
  • 【Hello Network】协议
  • 零项目零科研,本科排名倒数,一战上岸上海交大电子与通信工程
  • NOIP模拟赛 T3区间
  • 【Python】如何用pyth做游戏脚本(太简单了吧)
  • 【Linux】磁盘与文件系统
  • Transformer中的注意力机制及代码
  • ChatGPT在连续追问下对多线程和双重检查锁模式的理解--已经超越中级程序员
  • 每天一道大厂SQL题【Day22】华泰证券真题实战(四)
  • 【智能电网】智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)
  • IDEA 创建微服务项目实例
  • 注册苹果开发者账号的方法
  • OpenCV2 计算机视觉应用编程秘籍:1~5
  • Domino自带的JSON校验工具
  • CentOS(linux)使用Docker安装nacos
  • 无线测温在线监测系统工作原理与产品选型
  • Nginx rewrite ——重写跳转
  • 【华为OD机试真题 C++】1038 - 全量和已占用字符集 | 机试题+算法思路+考点+代码解析
  • 网络中的网关和物联网的网关区别 局域网 路由器 交换机 服务器
  • 2023 年嵌入式世界的3 大趋势分析
  • 基于 DolphinDB 机器学习的出租车行程时间预测
  • Python调用最小二乘法
  • 15.数据表格.上
  • 在poetry虚拟环境下打包exe