Java实验报告 继承、多态、接口和异常处理 下载本文

实验5 继承、多态、接口和异常处理

一、实验目的

1、掌握Java的类和对象的声明和使用方法; 2、掌握Java的类的继承和实现方法; 3、掌握多态性在类的继承中的运用; 4、掌握接口的定义与使用; 5、掌握基本异常的处理机制;

6、熟悉try语句与catch语句的搭配使用; 7、了解有异常处理与没有异常处理的差别; 8、多重catch语句的使用;

9、使用Throws声明异常和Throw抛出异常。

二、实验环境

1、PC微机;

2、DOS操作系统或 Windows 操作系统;

3、Java sdk程序开发环境、eclipse集成环境。

三、实验内容

1. 设计三个类,分别是学生类Student,本科生类UnderGraduate,研究生类

Postjgraduate,其中Student类是一个抽象类,它包含学生的基本信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate类都是Student类的子类,这两个类计算课程成绩等级的方法有所不同,如下表所示。假设某班级里既有研究生又有本科生,编写程序统计出全班学生的成绩等级并打印出来。 本科生标准 研究生标准 80~100 优秀 90~100 优秀 70~80 良好 80~90 良好 60~70 一般 70~80 一般 50~60 及格 60~70 及格 50以下 不及格 60以下 不及格 2. 设计实现一个Soundable接口,该接口由三个类Radio、Walkman和

Mobilephone具体实现,并设计一个应用程序类来使用这些类。

3.要求设计一个GUI图形窗口程序,该程序让用户输入一个星期中的任意一

天的数字1-7,然后输出该数字所对应的是星期几。

四、实验步骤

? 实验内容一

1.建立package experiment5_1,其最终目录结构如下:

2.建立Student类:

package experiment5_1;

public 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 String getType( ) { return type ; } public String getCourseGrade( ) { return courseGrade; }

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

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

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

3.建立外部类

(1)研究生类Postjgraduate

package experiment5_1;

public class postgraduate extends Student { public postgraduate(String name) { super(name); type = \研究生\ }

public void calculateGrade() { // TODO Auto-generated method stub 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)本科生类UnderGraduate

package experiment5_1;

public class undergraduate extends Student { public undergraduate(String name ) { super(name); type = \本科生\ }

public void calculateGrade() { int total = 0; double average = 0;

for (int i = 0; i < CourseNo; i++) { total += getCourseScore(i) ; };

average = total / CourseNo;

if (average>=80&&average<100) courseGrade = \优秀\ else if (average>=70&&average<80) courseGrade = \良好\ else if (average>=60&&average<70) courseGrade = \一般\ else if (average>=50&&average<60) courseGrade = \及格\

else courseGrade = \不及格\ } }

4.编写代码测试函数

package experiment5_1; public class polymorphism {

public static void main(String[] args) { 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,87); students[i].setCourseScore(1,90); students[i].setCourseScore(2,78); }

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( )); } } }

? 实验内容二

1.建立package experiment5_2,其最终目录结构如下:

2.写接口Soundable代码:

package experiment5_2;