欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Java中的interface應(yīng)用與面向接口編程

 更新時(shí)間:2023年10月10日 08:49:59   作者:zhangbeizhen18  
這篇文章主要介紹了淺談Java中的interface應(yīng)用與面向接口編程,Java的關(guān)鍵字interface應(yīng)用,一個(gè)接口,多個(gè)實(shí)現(xiàn)類,面向接口編程,把業(yè)務(wù)邏輯線提取出來(lái)作為接口,具體的業(yè)務(wù)實(shí)現(xiàn)通過該接口的實(shí)現(xiàn)類來(lái)完成,需要的朋友可以參考下

前言

場(chǎng)景:Java的關(guān)鍵字interface應(yīng)用,一個(gè)接口,多個(gè)實(shí)現(xiàn)類。面向接口編程,把業(yè)務(wù)邏輯線提取出來(lái)作為接口,具體的業(yè)務(wù)實(shí)現(xiàn)通過該接口的實(shí)現(xiàn)類來(lái)完成。

版本:JDK 1.8。

1.一個(gè)Java接口

(1)說(shuō)明

使用Java關(guān)鍵字interface修飾的類型,就是接口。

接口里面方法一般沒有函數(shù)體,實(shí)際就是抽象方法。

比如:String announceStart();

接口里面方法有函數(shù)體情況,一般使用default關(guān)鍵字修飾。

比如:default String holdSportGame() { ...}

(2)代碼

public interface SportContest {
  //開場(chǎng)儀式
  String announceStart();
  //舉行比賽
  ResultDto playGame();
  //頒獎(jiǎng)儀式
  String announceEnd(ResultDto resultDto);
  //舉行體育賽事
  default String holdSportGame() {
      String result01 = announceStart();
      ResultDto result02 = playGame();
      String result03 = announceEnd(result02);
      return result03;
  }
}

2.多個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)同一個(gè)Java接口

實(shí)現(xiàn)Java接口使用implements關(guān)鍵字。

(1)實(shí)現(xiàn)類TableTennisContest

public class TableTennisContest implements SportContest {
    //賽事任務(wù)
    private TaskDto taskDto = null;
    public TableTennisContest(TaskDto taskDto) {
        this.setTaskDto(taskDto);
    }
    @Override
    public String announceStart() {
        TaskDto taskDto = this.getTaskDto();
        System.out.println("舉行乒乓球比賽入場(chǎng)儀式:");
        System.out.println("步驟一: " + taskDto.getEventName() + "隊(duì)員入場(chǎng).");
        System.out.println("步驟二: 裁判員、教練員等各就各位.");
        return "乒乓球比賽進(jìn)行中";
    }
    @Override
    public ResultDto playGame() {
        TaskDto taskDto = this.getTaskDto();
        System.out.println("舉行乒乓球比賽: " + taskDto.getContent() + ",選手們?cè)趭^力搏擊.");
        return ResultDto.builder().teamName("中國(guó)乒乓球隊(duì)").content("女單決賽冠軍").build();
    }
    @Override
    public String announceEnd(ResultDto resultDto) {
        System.out.println("舉行頒獎(jiǎng)儀式: ");
        System.out.println("步驟一: 為" + resultDto.getTeamName() + resultDto.getContent() + "頒發(fā)金牌.");
        System.out.println("步驟二: 升中華人民共和國(guó)國(guó)旗,奏中華人民共和國(guó)國(guó)歌.");
        return "乒乓球比賽圓滿結(jié)束";
    }
    public TaskDto getTaskDto() {
        return this.taskDto;
    }
    public void setTaskDto(TaskDto taskDto) {
        this.taskDto = taskDto;
    }
}

(2)實(shí)現(xiàn)類SwimmingContest

public class SwimmingContest implements SportContest {
  //賽事任務(wù)
  private TaskDto taskDto = null;
  public SwimmingContest(TaskDto taskDto) {
      this.setTaskDto(taskDto);
  }
  @Override
  public String announceStart() {
      TaskDto taskDto = this.getTaskDto();
      System.out.println("舉行游泳比賽入場(chǎng)儀式:");
      System.out.println("步驟一: " + taskDto.getEventName() + "隊(duì)員入場(chǎng).");
      System.out.println("步驟二: 裁判員、教練員等各就各位.");
      return "游泳比賽進(jìn)行中";
  }
  @Override
  public ResultDto playGame() {
      TaskDto taskDto = this.getTaskDto();
      System.out.println("舉行游泳比賽: " + taskDto.getContent() + ",選手們?cè)跊_刺記錄.");
      return ResultDto.builder().teamName("中國(guó)游泳隊(duì)").content("男子組200米決賽冠軍").build();
  }
  @Override
  public String announceEnd(ResultDto resultDto) {
      System.out.println("舉行頒獎(jiǎng)儀式: ");
      System.out.println("步驟一: 為" + resultDto.getTeamName() + resultDto.getContent() + "頒發(fā)金牌.");
      System.out.println("步驟二: 升中華人民共和國(guó)國(guó)旗,奏中華人民共和國(guó)國(guó)歌.");
      return "游泳比賽圓滿結(jié)束";
  }
  public TaskDto getTaskDto() {
      return this.taskDto;
  }
  public void setTaskDto(TaskDto taskDto) {
      this.taskDto = taskDto;
  }
}

3.示例測(cè)試

(1)說(shuō)明

執(zhí)行接口函數(shù)時(shí),需先創(chuàng)建接口實(shí)現(xiàn)類的實(shí)例對(duì)象。

(2)代碼

public class ApplyInterface {
  // 主函數(shù)入口
  public static void main(String[] args) {
    System.out.println("*******************************");
    holdSportGame(new TableTennisContest(TaskDto.builder().eventName("乒乓球比賽").content("女單決賽").build()));
    System.out.println("*******************************");
    holdSportGame(new SwimmingContest(TaskDto.builder().eventName("游泳比賽").content("男子200米決賽").build()));
    System.out.println("*******************************");
  }
  // 面向接口編程
  public static void holdSportGame(SportContest sportContest) {
      sportContest.holdSportGame();
  }
}

(3)輸出結(jié)果

*******************************
舉行乒乓球比賽入場(chǎng)儀式:
步驟一: 乒乓球比賽隊(duì)員入場(chǎng).
步驟二: 裁判員、教練員等各就各位.
舉行乒乓球比賽: 女單決賽,選手們?cè)趭^力搏擊.
舉行頒獎(jiǎng)儀式: 
步驟一: 為中國(guó)乒乓球隊(duì)女單決賽冠軍頒發(fā)金牌.
步驟二: 升中華人民共和國(guó)國(guó)旗,奏中華人民共和國(guó)國(guó)歌.
*******************************
舉行游泳比賽入場(chǎng)儀式:
步驟一: 游泳比賽隊(duì)員入場(chǎng).
步驟二: 裁判員、教練員等各就各位.
舉行游泳比賽: 男子200米決賽,選手們?cè)跊_刺記錄.
舉行頒獎(jiǎng)儀式: 
步驟一: 為中國(guó)游泳隊(duì)男子組200米決賽冠軍頒發(fā)金牌.
步驟二: 升中華人民共和國(guó)國(guó)旗,奏中華人民共和國(guó)國(guó)歌.
*******************************

4.輔助實(shí)體類

(1)說(shuō)明

在實(shí)體類中使用注解@Data等來(lái)自lombok-1.18.24.jar。

(2)TaskDto

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TaskDto implements Serializable {
    //賽事名稱
    private String eventName;
    //活動(dòng)內(nèi)容
    private String content;
}

(3)ResultDto

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ResultDto implements Serializable {
    //競(jìng)賽隊(duì)伍
    private String teamName;
    //比賽成績(jī)
    private String content;
}

到此這篇關(guān)于淺談Java中的interface應(yīng)用與面向接口編程的文章就介紹到這了,更多相關(guān)Java的interface面向接口編程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java轉(zhuǎn)樹形結(jié)構(gòu)工具類詳解

    java轉(zhuǎn)樹形結(jié)構(gòu)工具類詳解

    這篇文章主要為大家詳細(xì)介紹了java轉(zhuǎn)樹形結(jié)構(gòu)工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Java中關(guān)于String StringBuffer StringBuilder特性深度解析

    Java中關(guān)于String StringBuffer StringBuilder特性深度解析

    這篇文章主要介紹了Java中關(guān)于String StringBuffer StringBuilder特性深度解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Mybatis-plus?代碼生成器?AutoGenerator?的簡(jiǎn)介和使用詳解

    Mybatis-plus?代碼生成器?AutoGenerator?的簡(jiǎn)介和使用詳解

    AutoGenerator是MyBatis-Plus的代碼生成器,通過AutoGenerator可以快速生成?Entity、Mapper、Mapper XML、Service、Controller等各個(gè)模塊的代碼,極大的提升了開發(fā)效率,這篇文章主要介紹了Mybatis-plus代碼生成器AutoGenerator的簡(jiǎn)介和使用,需要的朋友可以參考下
    2023-05-05
  • springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)

    springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn)

    springboot應(yīng)用服務(wù)再啟動(dòng)的時(shí)候,會(huì)在操作系統(tǒng)的/tmp目錄,本文主要介紹了springboot /tmp 臨時(shí)目錄的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • SpringBoot 集成 Kettle的實(shí)現(xiàn)示例

    SpringBoot 集成 Kettle的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot 集成 Kettle的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java常見基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

    Java常見基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

    這篇文章主要介紹了Java常見數(shù)據(jù)結(jié)構(gòu)面試題,帶有答案及解釋,希望對(duì)廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望可以幫助到你
    2021-07-07
  • SpringBoot中6種API版本控制策略小結(jié)

    SpringBoot中6種API版本控制策略小結(jié)

    API版本控制是確保系統(tǒng)平穩(wěn)演進(jìn)的關(guān)鍵策略,這篇文章主要為大家詳細(xì)介紹了SpringBoot中6種API版本控制策略,大家可以根據(jù)需要自行選擇
    2025-04-04
  • SpringBoot+Vue靜態(tài)資源刷新后無(wú)法訪問的問題解決方案

    SpringBoot+Vue靜態(tài)資源刷新后無(wú)法訪問的問題解決方案

    這篇文章主要介紹了SpringBoot+Vue靜態(tài)資源刷新后無(wú)法訪問的問題解決方案,文中通過代碼示例和圖文講解的非常詳細(xì),對(duì)大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • springboot Controller直接返回String類型帶來(lái)的亂碼問題及解決

    springboot Controller直接返回String類型帶來(lái)的亂碼問題及解決

    文章介紹了在Spring Boot中,當(dāng)Controller直接返回String類型時(shí)可能出現(xiàn)的亂碼問題,并提供了解決辦法,通過在`application.yaml`中設(shè)置請(qǐng)求和響應(yīng)的編碼格式,并在自定義配置類中進(jìn)行配置,可以有效解決這一問題
    2024-11-11
  • dubbo泛化調(diào)用使用及原理示例解析

    dubbo泛化調(diào)用使用及原理示例解析

    這篇文章主要為大家介紹了dubbo泛化調(diào)用使用及原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09

最新評(píng)論