Java的interface应用和面向接口编程 灰太狼 2024-04-23 02:39 34阅读 0赞 **记录**:477 **场景**: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() + "队员入场."); System.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 "游泳比赛进行中"; } @Override public ResultDto playGame() { TaskDto taskDto = this.getTaskDto(); System.out.println("举行游泳比赛: " + taskDto.getContent() + ",选手们在冲刺记录."); return ResultDto.builder().teamName("中国游泳队").content("男子组200米决赛冠军").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; } } **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; } 以上,感谢。 2023年9月14日
相关 面向对象编程:Java抽象类和接口的应用实例 面向对象编程(Object-Oriented Programming, OOP)在Java中主要通过抽象类和接口来实现。下面是一个简单的应用实例: 1. 抽象类 假设我们要 清疚/ 2024年09月15日 16:30/ 0 赞/ 17 阅读
相关 Java面向对象编程:抽象类和接口的应用案例 在Java中,抽象类和接口是面向对象设计中的重要工具。它们分别用于实现行为的继承性和定义行为的方式。 1. 抽象类: - 当一个类不能被实例化(因为它是空的),但希望其 叁歲伎倆/ 2024年09月10日 14:39/ 0 赞/ 23 阅读
相关 面向对象编程:Java中的继承和接口应用示例 在Java中,继承和接口是面向对象设计的重要特性。下面我们将通过具体的示例来理解它们的应用。 1. 继承 继承允许一个类(子类)共享另一个类(父类)的属性和方法。以下是一个 电玩女神/ 2024年09月10日 11:45/ 0 赞/ 23 阅读
相关 Java的interface应用和面向接口编程 记录:477场景:Java的关键字interface应用,一个接口,多个实现类。面向接口编程,把业务逻辑线提取出来作为接口,具体的业务实现通过该接口的实现类来完成。 灰太狼/ 2024年04月23日 02:39/ 0 赞/ 35 阅读
相关 面向接口编程?Service Provider Interface是什么Interface ![format_png][] 什么是SPI > Service provider interface (SPI) is an API intended to be i 刺骨的言语ヽ痛彻心扉/ 2023年09月25日 19:53/ 0 赞/ 78 阅读
相关 [Chrome]关于面向接口编程的应用 面向接口编程,或者说是面向抽象,是OOP中有效隔离变化的手段,同时要求开发者必须对问题进行有效抽象。Chrome为了兼容AOSP WebView和Chromium Androi 矫情吗;*/ 2022年08月06日 01:20/ 0 赞/ 129 阅读
相关 Java基础学习——面向抽象编程和面向接口编程 1、面向对象编程(抽象类) 在子类中重新定义父类的抽象方法,而后将子类的对象赋予父类的对象。这样父类可以调用子类中的方法。 定义多个子类继承父类,而后就可以分别将不同子类的 超、凢脫俗/ 2022年05月27日 03:58/ 0 赞/ 148 阅读
相关 Java面向对象编程(Object Oriented Programming,OOP)之接口(Interface) 引言 接口(Interface) 在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽 谁践踏了优雅/ 2022年05月16日 23:22/ 0 赞/ 99 阅读
还没有评论,来说两句吧...