开发者

浅谈Java中的interface应用与面向接口编程

目录
  • 前言
  • 1.一个Java接口
  • 2.多个实现类实现同一个Java接口
  • 3.示例测试
  • 4.辅助实体类

前言

场景:Java的关键字interface应用,一个接口,多个实现类。面向接口编程,把业务逻辑线提取出来作为接口,具体的业务实现通过该接口的实现类来完成。

版本:JDK 1.8。

1.一个Java接口

(1)说明

使用Java关键字interface修饰的类型,就是接口。

接口里面方法一般没有函数体,实际就是抽象方法。

比如:String announceStart();

接口里面方法有函数体情况,一般使用default关键字修饰。

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

(2)代码

public interface SportContest {
  //开场仪式
  String announceStart();
  //举行比赛
  ResultDto playGame();
  //颁奖仪式
  String announceEnd(ResultDto resultDto);
  //举行体育赛事
  default String holdSportGame() {
      String result01 = announceStart();
      ResultDto result02 = playGame();
      String result03 = announceEnd(result02);
      return result03;
  }
}

2.多个实现类实现同一个Java接口

实现Java接口使用implements关键字。

(1)实现类TableTennisContest

public class TableTennisContest implements SportContest {
    //赛事任务
    private TaskDto taskDto = null;
    public TableTennisContest(TaskDto taskDto) {
        this.setTaskDto(taskDto);
    }
    @Override
    public String announceStart() {
        TaskDto taskDto = this.getTaskDto();
        System.out.println("举行乒乓球比赛入场仪式:");
        System.out.println("步骤一: " + taskDto.getEventName() + "队员入场.");
        androidSystem.out.println("步骤二: 裁判员、教练员等各就各位.");
        return "乒乓球比赛进行中";
    }
    @Override
    public ResultDto playGame() {
        TaskDto taskDto = this.getTaskDto();
        System.out.println("举行乒乓球比赛: " + taskDto.getContent() + ",选手们在奋力搏击.");
        return ResultDto.builder().teamName("中国乒乓球队").content("女单决赛冠军").build();
    }
    @Override
    public String announceEnd(ResultDto resultDto) {
        System.out.println("举行颁奖仪式: ");
        System.out.println("步骤一: 为" + resultDto.getTeamName() + resultDto.getContent() + "颁发金牌.");
        System.out.println("步骤二: 升中华人民共和国编程客栈国旗,奏中华人民共和国国歌.");
        return "乒乓球比赛圆满结束";
    }
    public TaskDto getTaskDto() {
        return this.taskDto;
    }
    public void setTaskDto(TaskDto taskDto) {
        this.taskDto = taskDto;
    }
}

(2)实现类SwimmingContest

public class SwimmingContest implements SportContest {
  //赛事任务
  private TaskDto taskDto = null;
  public SwimmingContest(TaskDto taskDto) {
      this.setTaskDto(taskDto);
  }
  @Override
  public String announceStart() {
      TaskDto taskDto = this.getTaskDto();
      System.out.println("举行游泳比赛入场仪式:");
      System.out.println("步骤一: " + taskDto.getEventName() + "队员入场.");
      System.out.println("步骤二: 裁判员、教练员等各就各位.");
      return "游泳比赛进行中";
  }
  @O编程客栈verride
  public ResultDto playGame() {
      TaskDto taskDto = this.getTaskDto();
      System.out.println("举行游泳比赛: " + taskDto.getContent() + ",选手们在冲刺记录.");
      return ResultDto.builder().teamName("中国游泳队").content("男子组200米决赛冠军").build();
  }
  @Override
  public String announceEnd(ResultDto reshttp://www.devze.comultDto) {
      System.out.println("举行颁奖仪式: ");
      System.out.println("步骤一: 为" + resultDto.getTeamName() + resultDto.getContent() + "颁发金牌.");
      System.out.println("步骤二: 升中华人民共和国国旗,奏中华人民共和国国歌.");
      return "游泳比赛圆满结束";
  }
  public TaskDto getTaskDto() {
      return this.taskDto;
  }
  public void setTaskDto(TaskDto taskDto) {
      this.taskDto = taskDto;
 python }
}

3.示例测试

(1)说明

执行接口函数时,需先创建接口实现类的实例对象。

(2)代码

public class ApplyInterface {
  // 主函数入口
  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)输出结果

*******************************

举行乒乓球比赛入场仪式:

步骤一: 乒乓球比赛队员入场.

步骤二: 裁判员、教练员等各就各位.

举行乒乓球比赛: 女单决赛,选手们在奋力搏击.

举行颁奖仪式: 

步骤一: 为中国乒乓球队女单决赛冠军颁发金牌.

步骤二: 升中华人民共和国国旗,奏中华人民共和国国歌.

*******************************

举行游泳比赛入场仪式:

步骤一: 游泳比赛队员入场.

步骤二: 裁判员、教练员等各就各位.

举行游泳比赛: 男子200米决赛,选手们在冲刺记录.

举行颁奖仪式: 

步骤一: 为中国游泳队男子组200米决赛冠军颁发金牌.

步骤二: 升中华人民共和国国旗,奏中华人民共和国国歌.

*******************************

4.辅助实体类

(1)说明

在实体类中使用注解@Data等来自lombok-1.18.24.jar。

(2)TaskDto

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TaskDto implements Serializable {
    //赛事名称
    private String eventName;
    //活动内容
    private String content;
}

(3)ResultDto

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ResultDto implements Serializable {
    //竞赛队伍
    private String teamName;
    //比赛成绩
    private String content;
}

到此这篇关于浅谈Java中的interface应用与面向接口编程的文章就介绍到这了,更多相关Java的interface面向接口编程内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜