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

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

案例分析

案例分析

代码:

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();}
}

第一套方案结果

第一套方案

第二套方案结果

第二套方案结果

相关文章:

  • Selenium-Java版(环境安装)
  • 【LINUX操作系统】线程同步与互斥
  • Selenium-Java版(操作元素)
  • 毕业论文,如何区分研究内容和研究方法?
  • 级联与端到端对话系统架构解析:以Moshi为例
  • 二叉树前中后序遍历统一迭代法详解:空标记法与栈操作的艺术
  • LIO-SAM框架理解
  • 鸿蒙OSUniApp 实现精美的用户登录和注册页面#三方框架 #Uniapp
  • html5+css3实现傅里叶变换的动态展示效果(仅供参考)
  • Pytorch的Dataloader使用详解
  • 【USRP】在linux下安装python API调用
  • Oracle 中的虚拟列Virtual Columns和PostgreSQL Generated Columns生成列
  • 一分钟了解大语言模型(LLMs)
  • 基于ssm+mysql的高校设备管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • 音频分类的学习
  • De-biased Attention Supervision for Text Classifcation with Causality
  • 学习51单片机01(安装开发环境)
  • 基于Matlab的非线性Newmark法用于计算结构动力响应
  • STM32 之网口资源
  • 当 DeepSeek 遇见区块链:一场颠覆式的应用革命
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作
  • 崔登荣任国家游泳队总教练
  • 125%→10%、24%税率暂停90天,对美关税开始调整
  • 《AI×SCIENCE十大前沿观察》9:合成数据和数据基础设施
  • 上海建筑领域绿色发展2025年工作要点发布