封装、继承、多态的联合使用实现不同等级学生分数信息的统计

简介: 这篇文章通过Java代码示例演示了封装、继承和多态的概念,并用它们来实现不同等级学生分数信息的统计。

要求:根据不同学生的等级进行不同的分数成绩评定

1、封装

1、封装的概念

。。。

package bao;

abstract class Student {

    final static int CourseNo = 3;// 课程
    String name;// 姓名
    String type; // 类型
    int[] courses;// 成绩的数组
    String courseGrade;// 等级

    public Student(String name) {
        this.name = name;
        courses = new int[CourseNo];
        courseGrade = " ";// 初始成绩等级为空字符
    }

    public abstract void calculateGrade();// 计算总成绩的抽象方法

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public void setCourseScore(int courseNumber, int courseScore) {
        courses[courseNumber] = courseScore; // 按课程索引号设置课程的成绩
    }

    public int getCourseScore(int courseNumber) {
        return courses[courseNumber];
    }

    public void setCourseGrade(String courseGrade) {
        this.courseGrade = courseGrade;
    }

    public String getCourseGrade() {
        return courseGrade;
    }

}

2、继承

接口:。。。
抽象类:。。。

2.1、本科生继承学生类

package bao;

class Undergraduate extends Student {

    public Undergraduate(String name) { // 构造方法
        super(name); // 使用super调用父类的构造方法
        type = "本科生"; // 初始化父类的属性

    }

    @Override
    public void calculateGrade() { // 实现父类的抽象方法

        int total = 0;
        double average = 0;
        for (int i = 0; i < CourseNo; i++) { // 所有课程的成绩总和
            total += courses[i];
        }
        average = total / CourseNo; // 计算平均成绩
        if (average >= 90 && average < 100)
            courseGrade = "优秀";
        else if (average >= 80 && average < 90)
            courseGrade = "良好";
        else if (average >= 70 && average < 80)
            courseGrade = "一般";
        else if (average >= 60 && average < 70)
            courseGrade = "及格";
        else
            courseGrade = "不及格";

    }

}

2.2、 研究生继承学生类

package bao;

class Postgraduate extends Student {

    public Postgraduate(String name) {
        super(name);
        type = "研究生";
    }

    public void calculateGrade() { // 实现父类的抽象方法

        int total = 0;
        double average = 0;
        for (int i = 0; i < CourseNo; i++) { // 所有课程的成绩总和
            total += courses[i];
        }
        average = total / CourseNo; // 计算平均成绩
        if (average >= 95 && average < 100)
            courseGrade = "优秀";
        else if (average >= 85 && average < 95)
            courseGrade = "良好";
        else if (average >= 75 && average < 85)
            courseGrade = "一般";
        else if (average >= 65 && average < 75)
            courseGrade = "及格";
        else
            courseGrade = "不及格";

    }

}

3、多态

多态的概念:。。。

package bao;

public class Polymorphism {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student[] students = new Student[5];
        // 父类引用子类的对象
        students[0] = new Undergraduate("张三");
        students[1] = new Undergraduate("赵薇");
        students[2] = new Postgraduate("李四");
        students[3] = new Undergraduate("杨密");
        students[4] = new Postgraduate("唐洋");
        for (int i = 0; i < 5; i++) {
            students[i].setCourseScore(0, 88);
            students[i].setCourseScore(1, 90);
            students[i].setCourseScore(2, 96);
        }
        for (int i = 0; i < 5; i++) {
            students[i].calculateGrade();// 调用各自类中的方法
        }
        System.out.println("姓名 " + "          类型" + "              成绩");
        System.out.println("--------------------------------------------");
        for (int i = 0; i < 5; i++) {
            System.out
                    .println(students[i].getName() + "          " + students[i].getType() + "              " + students[i].getCourseGrade());
        }

    }

}

4、测试结果

在这里插入图片描述

相关文章
|
7月前
|
定位技术 计算机视觉 Windows
类间两种关系:继承、 组合
类间两种关系:继承、 组合
43 0
|
7月前
|
C++
4. C++类的组合
4. C++类的组合
62 0
|
7月前
|
C# 开发者 索引
C# 11.0中的所需成员:强化接口与抽象类的约束
【1月更文挑战第24天】C# 11.0引入了所需成员(Required members)的概念,这一新特性允许在接口和抽象类中定义必须被实现的成员,包括方法、属性、索引器和事件。通过所需成员,C# 强化了对接口实现和抽象类继承的约束,提高了代码的一致性和可维护性。本文将详细探讨C# 11.0中所需成员的工作原理、使用场景及其对现有编程模式的影响。
|
算法 安全 机器人
算法提高:计算几何基础 | 判断包含关系
计算几何是计算机科学的一个重要分支,主要研究几何形体的数学描述和计算机描述,在现代工程和数学领域,以及计算机辅助设计、地理信息系统、图形学、机器人技术、超大规模集成电路设计和统计等诸多领域都有重要的用途。在 ACM 竞赛中,出题相对独立,曾出现过与图论、动态规划相结合的题,大多数计算几何问题用程序实现都比较复杂。常用算法包括经典的凸包求解、离散化及扫描线算法、旋转卡壳、半平面交等。本文介绍计算几何常用算法——包含关系。
169 0
|
算法 C++ 容器
关系类算法函数
关系类算法函数
|
算法 C语言 C++
C++类的组合练习
C++类的组合练习
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
2022年 一月19号复盘内容二。(继承 多态 接口 抽象)(一)
49 0
【C++之多层继承】成员在各类的范围内的访问属性
【C++之多层继承】成员在各类的范围内的访问属性
接口vs抽象类、继承vs组合,他们之间有啥关系
接口vs抽象类、继承vs组合,他们之间有啥关系

热门文章

最新文章