Mobilephone mobile; tel = new Telephone(\ mobile = new Mobilephone(\ tel.setRate(0.2); tel.setDialledTime(150); mobile.setRate(0.4); //设置主叫时间为80 mobile.setReceivedTime(120); tel.display( );
System.out.println( ); //显示移动电话的信息 } }
第六题:
6. 设计三个类分别是学生类Student、本科生类Undergraduate和研究生类Postgraduate。
其中Student类是一个抽象类,它包含一些基本的学生信息,如姓名、所学课程、课程成绩等,而Undergraduate和Postgraduate类都是Student类的子类,它们之间的差别是计算课程成绩等级的方法有所不同。如下表所示: 标准 80~100 70~80 60~70 50~60 50以下 本科生 优秀 良好 一般 及格 不及格 90~100 80~90 70~80 60~70 60以下 研究生 标准 优秀 良好 一般 及格 不及格 假设某班级时既有本科生也有研究生,编写程序统计出全班学生的成绩等级并显示出来。查看如下源程序,其运行结果如下:
实验要求:
A. 现将下面的源程序补充完整
B. 在Polymorphism类中有一个循环语句来计算每个学生的成绩等级: for (int i=0; i<5 ;i++) {
students[i].calculateGrade(); }
这里的calculateGrade()方法是按照研究生的标准还是按照本科生的标准来计算的?
C. 在程序Polymorphism类中,哪些语句体现了子类的对象可以赋值给父类的引用变
量?
D. 在程序Polymorphism类的main()方法中添加下的语句:
Student st = new Student(\李明\
此时编译是否会报错?如有错误,请解释原因。
E. 在程序中要判断Student[i]中存放的究竟是Undergraduate对象还是Postgraduate对
象,只需要调用students[i].getType( )方法即可,然而Java提供了一个instanceof运算也可完成这一任务,它能判断一个对象所属的类,请将以下的代码添加到程序中进行测试:
for (int i=0; i<5 ;i++) { if (students[i] instanceof Undergraduate) System.out.println(students[i].getName( )+\是本科生\ else System.out.println(students[i].getName( )+\是研究生\ }
F. 模拟本程序,新增加一个高中生类,它计算成绩等级的标准采用如下方法,然后在
程序中测试并使用它。 标准 80~100 60~80 60以下 高中生 G. 源代码:Polymorphism.java
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( ) {
//返回学生类型 } 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) {
//按课程索引号设置课程成绩 } }
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++) {
//累加各门课程成绩 };
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 = \不及格\ } }
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>=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 = \不及格\ } }
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(\周丽娜\ //创建姓名为梁欣欣的Postgraduate对象students[4] 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( ));
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第3章-面向对象程序设计-上机实验要求 (1)(3)在线全文阅读。
相关推荐: