当前位置: 首页 > ai >正文

第七节第二部分:接口的综合案例

案例分析

案例分析

代码:

Student类

package com.Interface_Demo;public class Student {private String name;private char sex;private double score;public Student() {}public Student(String name, char sex, double score) {this.name = name;this.sex = sex;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}

StudentOperator(接口)

package com.Interface_Demo;import java.util.ArrayList;public interface StudentOperator {void printAllInfo(ArrayList<Student> students);void printAverageScore(ArrayList<Student> students);
}

StudentOperatorImpl1(继承接口的类,即第一套方案)

package com.Interface_Demo;import java.util.ArrayList;public class StudentOperatorImpl1 implements StudentOperator {@Override//打印全班学生信息public void printAllInfo(ArrayList<Student> students) {System.out.println("---------------全部学生信息如下------------------");for (int i = 0; i < students.size(); i++) {Student s = students.get(i);System.out.println("学生姓名:"+s.getName()+"     学生性别:"+s.getSex()+"    学生成绩:"+s.getScore());}System.out.println("----------------------------------------------");}@Overridepublic void printAverageScore(ArrayList<Student> students) {double avgScore = 0.0;for (int i = 0; i < students.size(); i++) {Student s = students.get(i);avgScore += s.getScore();}System.out.println("全班学生的平均成绩:"+(avgScore/students.size()));}
}

StudentOperatorImpl2(继承接口的类,即第二套方案)

package com.Interface_Demo;import java.util.ArrayList;public class StudentOperatorImpl2 implements StudentOperator {@Override//打印全班学生信息public void printAllInfo(ArrayList<Student> students) {System.out.println("---------------全部学生信息如下------------------");int count1 = 0;int count2 = 0;for (int i = 0; i < students.size(); i++) {Student s = students.get(i);System.out.println("学生姓名:"+s.getName()+"     学生性别:"+s.getSex()+"    学生成绩:"+s.getScore());if (s.getSex()=='男'){count1++;}else {count2++;}}System.out.println("男生人数:"+count1+"     女生人数:"+count2);System.out.println("全班人数:"+students.size());System.out.println("----------------------------------------------");}@Overridepublic void printAverageScore(ArrayList<Student> students) {double avgScore = 0.0;double max = students.get(0).getScore();double min = students.get(0).getScore();for (int i = 0; i < students.size(); i++) {Student s = students.get(i);avgScore += s.getScore();if (s.getScore()>max) max = s.getScore();if (s.getScore()<min) min = s.getScore();}System.out.println("最高分:"+max);System.out.println("最低分:"+min);System.out.println("全班学生的平均成绩:"+((avgScore-max-min)/(students.size()-2)));}
}

ClassManager类

package com.Interface_Demo;import java.util.ArrayList;public class ClassManager {private ArrayList<Student> students = new ArrayList<>();//利用面向接口,进行方案切换//第一套方案//StudentOperator studentOperator = new StudentOperatorImpl1();//使用第一套方案就是StudentOperatorImpl1,第二套方案就new StudentOperatorImpl2//第二套方案StudentOperator studentOperator = new StudentOperatorImpl2();public ClassManager() {students.add(new Student("飞鸟马时",'女',100));students.add(new Student("枣伊吕波",'女',99));students.add(new Student("伊洛玛丽",'女',98));students.add(new Student("尾刃康纳",'女',99));}//打印全班学生信息public void printInfo(){studentOperator.printAllInfo(students);}//打印全班学生分数public void printScore(){studentOperator.printAverageScore(students);}
}

Test类(运行的主程序)

package com.Interface_Demo;public class Test  {//完成班级学生信息管理案例public static void main(String[] args) {ClassManager classManager = new ClassManager();classManager.printInfo();classManager.printScore();}
}

第一套方案结果

第一套方案

第二套方案结果

第二套方案结果

http://www.xdnf.cn/news/6224.html

相关文章:

  • 一文介绍电路交换、报文交换和分组交换
  • Shell
  • Apollo学习——aem问题
  • AI时代的弯道超车之第十二章:英语和编程重要性?
  • 【ROS2】【分步讲解】节点的使用以及引入消息接口的方法
  • 软件设计师考试《综合知识》计算机编码考点分析——会更新软设所有知识点的考情分析,求个三连
  • Qt之Qfile类
  • STM32-USART串口通信(9)
  • 材料疲劳E-N曲线的优势及其在疲劳仿真中的应用
  • 18、时序数据库 (TSDB) 存储高密度传感器数据组件 - /数据与物联网组件/tsdb-power-plant-archive
  • OpenSHMEM 介绍和使用指南
  • contains方法的实现对比
  • Java 源码 HashMap源码分析
  • ConcurrentHashMap
  • GeoServer发布WMTS详细过程
  • javaScript简单版
  • 详解Windows(十三)——Windows防火墙
  • k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持
  • ESG时代,EcoVadis认证如何提升企业国际竞争力
  • 苍穹外卖--菜品分页查询
  • 优雅的请求接口(java)
  • 制造业降本增效的核心要素
  • 通过SMTP协议实现Linux邮件发送配置指南
  • 0514得物、0509滴滴面试总结复盘
  • 20250514 无限空间,当 a(t)→0,所有‌物理距离‌ d→0 ‌,这个状态是什么,是无限大的无限致密状态吗
  • 什么是临时对象?临时对象在什么情况下产生?
  • 网络检测工具InternetTest v8.9.1.2504 单文件版,支持一键查询IP/DNS、WIFI密码信息
  • 自营交易考试中,怎么用“黄昏之星”形态做出漂亮反转单?
  • 2025年文化传播、心理学与公共管理国际会议(CPPM 2025)
  • unordered_map和unordered的介绍和使用