假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果三门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计:
(1)设计一个基类Student描述学生的共同特征。
package cx3;
public abstract class Student {
private int ID;
private String Name;
private int Score1,Score2,Score3;
private double Mid_score;
public Student(int ID,String Name,int Score1, int Score2, int Score3) {
this.ID=ID;
this.Name=Name;
this.Score1 = Score1;
this.Score2 = Score2;
this.Score3 = Score3;
this.Mid_score=(double)(this.Score1+this.Score2+this.Score3)/3;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getScore1() {
return Score1;
}
public void setScore1(int Score1) {
Mid_score-=this.Score1/3;
this.Score1 = Score1;
Mid_score+=this.Score1/3;
}
public int getScore2() {
return Score2;
}
public void setScore2(int Score2) {
Mid_score-=this.Score2/3;
this.Score2 = Score2;
Mid_score+=this.Score2/3;
}
public int getScore3() {
return Score3;
}
public void setScore3(int Score3) {
Mid_score-=this.Score3/3;
this.Score3 = Score3;
Mid_score+=this.Score3/3;
}
public double getMid_score() {
return Mid_score;
}
@Override
public abstract String toString();
abstract boolean equal();
}
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
package cx3;
public class Undergraduate extends Student{
public Undergraduate(int ID, String Name, int Score1, int Score2, int Score3) {
super(ID, Name, Score1, Score2, Score3);
}
boolean equal(){
return getMid_score()>60;
}
@Override
public String toString() {
return "Undergraduate{" +
"ID=" + getID() +
", Name='" + getName() + '\'' +
", Score1=" + getScore1() +
", Score2=" + getScore2() +
", Score3=" + getScore3() +
", Mid_score=" + getMid_score() +
'}';
}
}
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
package cx3;
public class Graduate extends Student{
public Graduate(int ID, String Name, int Score1, int Score2, int Score3) {
super(ID, Name, Score1, Score2, Score3);
}
boolean equal(){
return getMid_score()>80;
}
@Override
public String toString() {
return "Graduate{" +
"ID=" + getID() +
", Name='" + getName() + '\'' +
", Score1=" + getScore1() +
", Score2=" + getScore2() +
", Score3=" + getScore3() +
", Mid_score=" + getMid_score() +
'}';
}
}
(4)设计一个主类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
package cx3;
public class StudentDemo {
public static void main(String[] args){
Undergraduate un=new Undergraduate(111,"AAA",60,40,70);
Graduate gr=new Graduate(222,"BBB",70,60,50);
System.out.println(un.toString());
System.out.println("该学生通过情况:"+un.equal());
System.out.println(gr.toString());
System.out.println("该学生通过情况:"+gr.equal());
}
}
运行结果: