深 圳 大 学 实 验 报 告
课程名称: JAVA程序设计
实验项目名称: 继承和接口
学院: 计算机与软件学院
专业:
指导教师: 杨芳
报告人: 侯锦辉 学号:2013130075 班级: 01
实验时间: 2016-10-11
实验报告提交时间: 2016.10.22
教务处制
一、实验目的
(1)理解继承的概念,掌握继承的语法; (2)学习定义和使用子类; (3)学习定义和使用抽象类; (4)学习定义和使用接口; (5)学习实现接口;
(6)掌握继承过程中的方法覆盖,区分它与方法重载的不同; (7)掌握如何利用接口间接实现多重继承; (8)掌握对象类型之间的转换规则; (9)掌握多态与动态绑定。
二、实验内容
本次实验内容有两题: 第一题:
(1)编写图形接口Shape,该接口包含一个常量pi(pi=3.14)和三个抽象方法:一个是getCircumference(),功能为求图形的周长;一个是getArea(),功能为求图形的面积;一个是getShapeName(),功能为返回图形的名称。 (2)编写类Show,该类有一个方法:printShape(Shape sh),功能为输出图形参数sh的名称、周长和面积。
(3)编写Show的两个子类,一个是圆形类Circle,另一个是矩形类Rectangle,要求这两个类都要实现图形接口Shape。Circle类有一个成员变量:radius(圆的半径);Rectangle类有两个成员变量:height(长方形的高)和width(长方形的宽)。并且,Rectangle类包含一个内部类JudgeSquare,它有一个方法judge(),判断这个长方形是否为一个正方形,并输出判断结果。
(4)编写测试类Test,生成一个Circle对象和两个Rectangle对象(一个为长方形,一个为正方形),三个对象分别调用父类的printShape方法,输出各自的周长和面积;其中Rectangle对象还要调用内部类JudgeSquare的方法judge来判断自己是否为正方形; 输出结果类似如下所示:
(提示:实现一个接口的类的对象,可利用接口回调直接赋值给接口,和上转型类似(子类对象可直接赋值给父类对象))
第二题:
请设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是一个抽象类,它包含一些基本的学生信息,如姓名、类别(本科生还是研究生)、所学课程(这里假定为3门课,用一维数组表示)成绩和成绩等级等,而Undergraduate类和Postgraduate都是Student类的子类,它们之间的主要差别是计算3门课程平均成绩等级的方法有所不同,研究生的标准要比本科生的标准高一些,如下表所示:
-2-
本科生标准 80~100 优秀 70~80 良好 60~70 一般 50~60 及格 50以下 不及格
研究生标准 90~100 优秀 80~90 良好 70~80 一般 60~70 及格 60以下 不及格
假设某班级里既有本科生(3个)也有研究生(2个),请编写程序统计全班学生的成绩等级并显示出来。 假设测试数据为:
张三 本科生 90,95,100 李四 本科生 80,85,90 王五 研究生 82,85,88 赵六 本科生 75,82,87 陈七 研究生 80,82,84 运行结果如下所示:
姓名 类型 成绩
张三 本科生 优秀 李四 本科生 优秀 王五 研究生 良好 赵六 本科生 优秀 陈七 研究生 良好
(提示:关键是设计一个学生数组,既能存放本科生对象,又能存放研究生对象。姓名、类别及成绩等级等属性设置为String类型。)
三、程序清单
abstract class student {
String grade; String name; int x; int y; int z;
abstract void display(); }
class Undergraduate extends student {
Undergraduate(String str1,String str2,int a,int b,int c) {
name=str1; grade=str2; x=a; y=b;
-3-