最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java9開始——接口中可以定義private私有方法

 更新時間:2020年10月13日 10:58:29   作者:字母哥博客  
這篇文章主要介紹了從java9開始 接口中可以定義private私有方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下

在傳統(tǒng)的Java編程中,被廣為人知的一個知識點是:java Interface接口中不能定義private私有方法。只允許我們定義public訪問權(quán)限的方法、抽象方法或靜態(tài)方法。但是從Java 9 開始,Interface 接口中允許定義私有方法和私有靜態(tài)方法。下面我們就來為大家介紹其語法規(guī)則,和為什么要有這樣的設(shè)計。

其實在Java 8之前,還有另一個被廣為人之的知識點:接口中所有的方法必須是abstract 抽象方法。但是,從java 8開始接口中可以包含非abstract 方法,如下文中的default方法。這個不是我們本文要為大家介紹的內(nèi)容,如不熟悉,請自行補課。

一、Java 9接口定義私有方法

從Java 9開始,我們可以在Interface接口中添加private的私有方法和私有靜態(tài)方法。這些私有方法將改善接口內(nèi)部的代碼可重用性。例如,如果需要兩個默認方法來共享代碼,則私有接口方法將允許它們共享代碼,但不將該私有方法暴露給它的實現(xiàn)類調(diào)用(后文中會給大家舉一個例子)。

在接口中使用私有方法有四個規(guī)則:

  • 接口中private方法不能是abstract抽象方法。因為abstract抽象方法是公開的用于給接口實現(xiàn)類實現(xiàn)的方法,所以不能是private。
  • 接口中私有方法只能在接口內(nèi)部的方法里面被調(diào)用。
  • 接口中私有靜態(tài)方法可以在其他靜態(tài)和非靜態(tài)接口方法中使用。
  • 接口中私有非靜態(tài)方法不能在私有靜態(tài)方法內(nèi)部使用。
interface CustomInterface {

  public abstract void abstractMethod(); //抽象方法不能是私有的

  public default void defaultMethod() {
    privateMethod(); //可以調(diào)用接口中的私有方法
    privateStaticMethod(); //可以調(diào)用接口中的私有靜態(tài)方法
    System.out.println("普通方法被調(diào)用");
  }

  public static void staticMethod() {
    privateStaticMethod(); //public靜態(tài)方法可以調(diào)用private靜態(tài)方法
    System.out.println("靜態(tài)方法被調(diào)用");
  }

  private void privateMethod() {
    System.out.println("private私有方法被調(diào)用");
  }

  private static void privateStaticMethod() {
    System.out.println("private私有靜態(tài)方法被調(diào)用");
  }
}

按照上面四個規(guī)則,上面的代碼定義都是正確的

二、一個例子:分別計算奇數(shù)與偶數(shù)的和

接口定義如下,下文中add方法采用了java8 的Stream流操作,分別使用lambda表達式作為過濾條件,并求和。核心是:addEvenNumbers偶數(shù)求和函數(shù)和addOddNumbers奇數(shù)求和函數(shù),都調(diào)用了add接口私有方法。

public interface CustomCalculator 
{
  default int addEvenNumbers(int... nums) { //非抽象,java8 開始可以定義default方法
    return add(n -> n % 2 == 0, nums);  //過濾偶數(shù)并求和,調(diào)用private私有方法
  }
 
  default int addOddNumbers(int... nums) { //非抽象,java8 開始可以定義default方法
    return add(n -> n % 2 != 0, nums); //過濾奇數(shù)并求和,調(diào)用private私有方法
  }
 
  //按照過濾條件過濾奇數(shù)或偶數(shù)并sum求和:java9開始可以定義private私有方法
  private int add(IntPredicate predicate, int... nums) { 
    return IntStream.of(nums)  //java8 Stream流
        .filter(predicate)  //java8 predicate及過濾器
        .sum(); //sum求和
  }
}

接口實現(xiàn)類MainCalculator 實現(xiàn)CustomCalculator接口

public class MainCalculator implements CustomCalculator {
 
  public static void main(String[] args) {
    CustomCalculator demo = new MainCalculator ();
     
    int sumOfEvens = demo.addEvenNumbers(1,2,3,4,5,6,7,8,9);
    System.out.println(sumOfEvens);  //過濾所有偶數(shù)并求和,結(jié)果是20
     
    int sumOfOdds = demo.addOddNumbers(1,2,3,4,5,6,7,8,9);
    System.out.println(sumOfOdds);  //過濾所有奇數(shù)并求和,結(jié)果是25
  } 
}

作者鏈接:字母哥博客

以上就是java9開始 接口中可以定義private私有方法的詳細內(nèi)容,更多關(guān)于Java定義private私有方法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot整合redis實現(xiàn)輸入密碼錯誤限制登錄功能

    SpringBoot整合redis實現(xiàn)輸入密碼錯誤限制登錄功能

    遇到這樣的需求需要實現(xiàn)一個登錄功能,并且2分鐘之內(nèi)只能輸入5次錯誤密碼,若輸入五次之后還沒有輸入正確密碼,系統(tǒng)將會將該賬號鎖定1小時,這篇文章主要介紹了SpringBoot整合redis并實現(xiàn)輸入密碼錯誤限制登錄功能,需要的朋友可以參考下
    2024-02-02
  • SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼

    SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼

    這篇文章主要給大家介紹了SpringMVC獲取請求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,文中通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • Javac/javap 自帶工具簡單使用講解

    Javac/javap 自帶工具簡單使用講解

    這篇文章主要介紹了Javac/javap 自帶工具簡單使用講解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • java跳出多重循環(huán)的三種實現(xiàn)方式

    java跳出多重循環(huán)的三種實現(xiàn)方式

    文章主要介紹了Java中跳出多重循環(huán)的三種方式:使用`break`配合標簽、在布爾表達式中添加判斷變量、以及使用`try-catch`制造異常,每種方式都有具體的代碼示例,并輸出了相應(yīng)的執(zhí)行結(jié)果
    2025-01-01
  • SpringMVC中的@RequestMapping注解的使用詳細教程

    SpringMVC中的@RequestMapping注解的使用詳細教程

    @RequestMapping注解的作用就是將請求和處理請求的控制器方法關(guān)聯(lián)起來,建立映射關(guān)系,本文主要來和大家詳細講講它的具體使用,感興趣的可以了解一下
    2023-07-07
  • 如何將字符串、字節(jié)數(shù)組轉(zhuǎn)為輸入流

    如何將字符串、字節(jié)數(shù)組轉(zhuǎn)為輸入流

    這篇文章主要介紹了如何將字符串、字節(jié)數(shù)組轉(zhuǎn)為輸入流問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中的注解、元注解詳細解析

    Java中的注解、元注解詳細解析

    這篇文章主要介紹了Java中的注解、元注解詳細解析,注解也叫元數(shù)據(jù),與類、接口、枚舉是在同一個層次,它可以聲明在包、類、字段、方法、局部變量、方法參數(shù)等的前面,用來對這些元素進行說明,注釋,需要的朋友可以參考下
    2023-11-11
  • JAVA區(qū)間值判斷[10,20)的實現(xiàn)

    JAVA區(qū)間值判斷[10,20)的實現(xiàn)

    本文主要介紹了JAVA區(qū)間值判斷[10,20)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • JavaWeb詳細講述Cookie和Session的概念

    JavaWeb詳細講述Cookie和Session的概念

    web開發(fā)階段我們主要是瀏覽器和服務(wù)器之間來進行交互。瀏覽器和服務(wù)器之間的交互就像人和人之間進行交流一樣,但是對于機器來說,在一次請求之間只是會攜帶著本次請求的數(shù)據(jù)的,但是可能多次請求之間是會有聯(lián)系的,所以提供了會話機制
    2022-06-06
  • 在Java中以及Spring環(huán)境下操作Redis的過程

    在Java中以及Spring環(huán)境下操作Redis的過程

    文章介紹了在Java和Spring環(huán)境下操作Redis的基本方法,在Java環(huán)境下,使用Maven創(chuàng)建項目并導(dǎo)入Jedis依賴,通過配置端口轉(zhuǎn)發(fā)訪問Redis,文章總結(jié)了Redis的基本命令和類別,如String、list、hash、set和zset,感興趣的朋友跟隨小編一起看看吧
    2025-03-03

最新評論

揭东县| 高州市| 沙雅县| 淮北市| 永寿县| 石楼县| 乌拉特前旗| 玉树县| 屏东县| 大新县| 九寨沟县| 岳普湖县| 尚志市| 馆陶县| 江口县| 嵊泗县| 丰宁| 苗栗市| 江永县| 新沂市| 新竹县| 普宁市| 北票市| 会同县| 二连浩特市| 临城县| 松潘县| 马鞍山市| 阿拉善盟| 当雄县| 齐河县| 通化县| 巫山县| 基隆市| 泰宁县| 精河县| 江阴市| 光山县| 仁布县| 安平县| 明水县|