假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (1)设计一个基类Student描述学生的共同特征。 (2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。 (3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。 (4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
时间: 2023-11-22 19:56:22 浏览: 108
下面是该Java类的设计和实现:
```
// 基类Student
class Student {
String name; // 学生姓名
int[] scores; // 学生成绩
// 构造方法
public Student(String name, int[] scores) {
this.name = name;
this.scores = scores;
}
// 计算平均分数
public double averageScore() {
int sum = 0;
for (int score : scores) {
sum += score;
}
return (double)sum / scores.length;
}
}
// 本科生类Undergraduate,继承自Student类
class Undergraduate extends Student {
// 构造方法
public Undergraduate(String name, int[] scores) {
super(name, scores);
}
// 判断是否通过
public boolean isPass() {
return averageScore() >= 60;
}
}
// 研究生类Graduate,继承自Student类
class Graduate extends Student {
// 构造方法
public Graduate(String name, int[] scores) {
super(name, scores);
}
// 判断是否通过
public boolean isPass() {
return averageScore() >= 80;
}
}
// 测试类StudentDemo
public class StudentDemo {
public static void main(String[] args) {
int[] undergradScores = {65, 70, 75}; // 本科生成绩
int[] gradScores = {85, 90, 95}; // 研究生成绩
// 创建本科生对象
Undergraduate undergrad = new Undergraduate("张三", undergradScores);
System.out.println("本科生" + undergrad.name + "的平均分数为:" + undergrad.averageScore());
System.out.println("本科生" + undergrad.name + (undergrad.isPass() ? "通过" : "未通过"));
// 创建研究生对象
Graduate grad = new Graduate("李四", gradScores);
System.out.println("研究生" + grad.name + "的平均分数为:" + grad.averageScore());
System.out.println("研究生" + grad.name + (grad.isPass() ? "通过" : "未通过"));
}
}
```
运行结果:
```
本科生张三的平均分数为:70.0
本科生张三通过
研究生李四的平均分数为:90.0
研究生李四通过
```
阅读全文