在业务发展过程中,发现某个功能是所有子类都需要的,那么我们该怎么办?给接口增加抽象方法吗?如果直接在接口增加抽象方法,那么所有已经写好的具体实现类就会报编译错误。因为具体类必须实现接口的全部抽象方法。这样就给代码的扩展带来很大的麻烦。如果可以只在接口增加需要的方法,而所有的实现子类就可以直接拿来使用就方便许多了。这就是允许接口添加默认方法的原因。

public interface CRMSystem {Client add(Client newGuy);Event add(Event e, Client guy);Event[] todayEvents();// 默认方法,用来升级接口public default void myMethodDefault() {...}
}

那么为什么要在接口增加静态方法和私有方法呢?

public static 返回值类型 方法名(参数列表) {方法体} // 静态方法,不可以是protected,默认是public
private 返回值类型 方法名(参数列表) {方法体} // 私有的普通方法
private static 返回值类型 方法名(参数列表) {方法体} // 私有的静态方法

参阅:https://q.cnblogs.com/q/137311/

为什么Java在后来的版本中,给接口增加了默认方法、静态方法、私有方法?相关推荐

  1. [Java基础]接口组成(默认方法,静态方法,私有方法)

    默认方法: 代码如下: package MyInterfacePack;public interface MyInterface {void show1();void show2();// void ...

  2. java所定义的版本中不包括_JAVA语言基础题、 求做完

    选择题(针对以下题目,请选择最符合题目要求的答案,针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分.)(每题2分)没有注明选择几项的... 选择题(针对以下题目 ...

  3. java所定义的版本中不包括_java试题模拟出题

    四川农业大学java程序语言设计期末模拟试题 一.单项选择(每题2分,共20分) 1.Java应用程序中,程序执行的总入口方法是:B A.start() B.main() C.run() D.init ...

  4. java 企业版_下列版本中哪个是Java 企业版

    下列版本中哪个是Java 企业版 2021-02-07 下列版本中哪个是Java 企业版 张爱玲评价自己的服饰:"仿佛穿着博物院的()到处走,遍体森森然飘飘欲仙".转动惯量是刚体转 ...

  5. word加水印铺满java,Word 2010文档中让水印铺满整个页面的设置方法

    在Word 2010中,通过简单的鼠标单击即可为文档添加水印,但这样只能在每一个文档页面内添加一个水印,这个在前面的文章已经有所介绍,具体请见:Word文档添加内置水印.个性化图片及文字水印的方法,但 ...

  6. java私有属性和私有方法_Java接口–历年来Java 9之旅–默认方法和私有方法

    java私有属性和私有方法 介绍 Java接口已经比Java版本进行了更多的演变,而Java 8和Java 9则有所发展.在本文中,我们将介绍接口在Java 8之前的样子以及如何在Java 8和Jav ...

  7. Python类中公开方法、私有方法和特殊方法的继承原理

    在Python中,对象的私有成员在类外部.派生类或程序中无法直接访问,但是可以通过"对象名._类名__私有成员名"这样一种特殊的形式来访问. 基类的构造方法和公开方法可以在类的外部 ...

  8. java怎么打印星期_java中获取日期是星期几的两种方法

    java中取得指定日期是星期几可以采用下面两种方式取得日期是星期几:(推荐:java视频教程) 1.使用Calendar类//根据日期取得星期几 public static String getWee ...

  9. java获取插入数据库表中的自增列值的一个简单方法

    PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); // 第一步 ps.execute ...

最新文章

  1. 产品经理如何开始数据分析之路?(基础知识)
  2. mybatis实现多对多
  3. Linux-5.10.13内核完全注释之工作队列
  4. 【Qt教程】1.8 - Qt5-Lambda表达式
  5. Javascript访问Cookie的四个常用方法
  6. 帆软获取单元格值与赋值
  7. luogu P5336 [THUSC2016]成绩单
  8. 网络爬虫-re库-正则表达式
  9. java盘盈盘亏_反映财产物资的盘盈、盘亏和毁损情况,应当设( )科目。
  10. 计算机与算盘有什么区别
  11. 投资不足半年,字节跳动退出李子柒签约公司“微念”
  12. ERROR: Cannot uninstall 'pywin32'.
  13. 微信小程序——wxs脚本
  14. 爬虫----b站弹幕
  15. hdu4514 并查集+树直径
  16. 悠易科技京东云联合解决方案发布会成功举办
  17. 基于matlab的瑞利信道模拟和仿真
  18. Android studio——输入学号是否正确
  19. 【聊天室系统源码】多语言海外版匿名中英文聊天室开发
  20. 朴素贝叶斯算法检测DGA

热门文章

  1. java 示例_功能Java示例 第3部分–不要使用异常来控制流程
  2. python异常值如何处理_如何处理异常
  3. kata_小规模流处理kata。 第2部分:RxJava 1.x / 2.x
  4. 子模板继承父模板示例_模板设计模式示例
  5. cuba 平台_CUBA平台的理念
  6. java jsoup解析_3使用Jsoup解析Java中HTML文件的示例
  7. lucene快速入门_为Lucene选择快速唯一标识符(UUID)
  8. java se/ee_嗨,您好 。 。 ! 您如何评价Java / Java EE技能?
  9. JUnit 5中的测试执行顺序
  10. 无服务器,Java和FN项目的第一步