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

淺談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)通過(guò)該接口的實(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)通過(guò)該接口的實(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)文章

最新評(píng)論

安岳县| 万州区| 莲花县| 柘荣县| 循化| 金阳县| 黄石市| 丰镇市| 霞浦县| 合阳县| 滨海县| 凤庆县| 兴山县| 徐闻县| 慈利县| 高要市| 前郭尔| 措美县| 石屏县| 乐清市| 大名县| 赣榆县| 青州市| 嫩江县| 肥乡县| 遂平县| 衢州市| 泸水县| 贡山| 苍梧县| 瓦房店市| 霸州市| 弥勒县| 祁阳县| 荆州市| 凯里市| 四子王旗| 宣汉县| 景东| 莎车县| 湘乡市|