要求:根據不同學生的等級進行不同的分數成績評定
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());
}
}
}