用Java编写设计 3 个类 , 分别是学生类 Student, 本科生类 Undergaduate, 研究生类 Postgraduate, 其中 Student 类是一个抽象类 , 它包含一些基本的学生信息如姓名、所学课程、课程成绩等 , 而 Undergraduate 类和 Postgraduate 都是 Student 类的子类 , 它们之间的主要差别是计算课程成绩等级的方法有所不同 , 研究生的标准要比本科生的标准高一些 , 如下表所示。 本科生标准 研究生标准 80-100 优秀 90-100 优秀 70-80 良好 80-90 良好 60-70 一般 70-80 一般 50-60 及格 60-70 及格 50以下 不及格 60以下 不及格 假设某班级里既有本科生也有研究生 , 请编写程序统计出全班学生的成绩等级并显示出来。此题关键是设计一个学生数组 , 既能存放本科生对象 , 又能存放研究生对象。
时间: 2023-07-15 10:10:42 浏览: 65
以下是代码实现:
```java
abstract class Student {
private String name;
private String course;
private double score;
public Student(String name, String course, double score) {
this.name = name;
this.course = course;
this.score = score;
}
public String getName() {
return name;
}
public String getCourse() {
return course;
}
public void setScore(double score) {
this.score = score;
}
public double getScore() {
return score;
}
public abstract String getGrade();
}
class Undergraduate extends Student {
public Undergraduate(String name, String course, double score) {
super(name, course, score);
}
@Override
public String getGrade() {
if (getScore() >= 80 && getScore() <= 100) {
return "优秀";
} else if (getScore() >= 70 && getScore() < 80) {
return "良好";
} else if (getScore() >= 60 && getScore() < 70) {
return "一般";
} else if (getScore() >= 50 && getScore() < 60) {
return "及格";
} else {
return "不及格";
}
}
}
class Postgraduate extends Student {
public Postgraduate(String name, String course, double score) {
super(name, course, score);
}
@Override
public String getGrade() {
if (getScore() >= 90 && getScore() <= 100) {
return "优秀";
} else if (getScore() >= 80 && getScore() < 90) {
return "良好";
} else if (getScore() >= 70 && getScore() < 80) {
return "一般";
} else if (getScore() >= 60 && getScore() < 70) {
return "及格";
} else {
return "不及格";
}
}
}
public class StudentTest {
public static void main(String[] args) {
Student[] students = new Student[5];
students[0] = new Undergraduate("张三", "Java程序设计", 85);
students[1] = new Postgraduate("李四", "机器学习", 92);
students[2] = new Undergraduate("王五", "数据结构", 75);
students[3] = new Postgraduate("赵六", "深度学习", 78);
students[4] = new Undergraduate("钱七", "计算机网络", 60);
for (Student student : students) {
System.out.println(student.getName() + "的成绩等级为:" + student.getGrade());
}
}
}
```
在上述代码中,我们定义了一个抽象类 `Student`,并在其中包含了学生的基本信息属性以及抽象方法 `getGrade()`,用于计算学生的成绩等级。我们还定义了两个子类 `Undergraduate` 和 `Postgraduate`,它们分别继承了 `Student` 类,并重写了 `getGrade()` 方法。
在 `StudentTest` 类中,我们创建了一个 `Student` 类型的数组,并存储了本科生和研究生对象。最后,我们遍历数组,调用每个学生对象的 `getGrade()` 方法,输出每个学生的成绩等级。
阅读全文