实验七 抽象与多态
1.请
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
3 个类 , 分别是学生类 Student, 本科生类 Undergaduate, 研究生类 Postgraduate, 其中 Student 类是一个抽象类 , 它包含一些基本的学生信息如姓名、所学课程、课程成绩等 , 而 Undergraduate 类和 Postgraduate 都是 Student 类的子类 , 它们之间的主要差别是计算课程成绩等级的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
有所不同 , 研究生的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
要比本科生的标准高一些 , 如
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
1-2 所示。表 1-2 课程成绩等级
本科生标准
研究生标准
80--100
优秀
90--100
优秀
70--80
良好
80--90
良好
60--70
一般
70--80
一般
50--60
及格
60--70
及格
50 以下
不及格
60 以下
不及格
假设某班级里既有本科生也有研究生 , 请编写程序统计出全班学生的成绩等级并显示出来。此题关键是设计一个学生数组 , 既能存放本科生对象 , 又能存放研究生对象。
//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];
【代码1】 //初始化courseGrade为空串
}
public abstract void calculateGrade();
public String getName( )
{
return name;
}
public String getType( )
{
【代码2】 //返回学生类型
}
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)
{
【代码3】 //按课程索引号设置课程成绩
}
}
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++) {
【代码4】 //累加各门课程成绩
};
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("周丽娜");
【代码5】 //创建姓名为梁欣欣的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( ));
}
}
}
2.编写一个 Java 程序 , 程序中有一个父类 Telephone,Telephone 类中包含有电话品牌、电话号码、通话时间、费率等属性 , 以及计算话费和显示信息等方法。另外 , 程序中还有另一个类叫作 Mobilephone, 它是 Telephone 的子类 , 除了具有 Telephone 类的属性外 , 它还有自己的属性如网络类型、被叫时间 , 同时它有自己的计算话费和显示信息的方法。 最后程序中应包含一个主类来使用上述两个类并显示它们的信息。仔细阅读程序清单 1-5, 完成代码1~代码5.
程序清单 1-5 Inheritance.java
class Telephone {
String brand, number;
double dialledTime;
double rate;
Telephone(String b, String n) {
代码1 //初始化电话品牌和号码
}
String getBrand( ) { return brand; }
String getNumber( ) { return number; }
代码2 //返回费率值
double getDialledTime( ) { return dialledTime; }
void setBrand(String b) {
brand = b;
}
void setNumber(String n) {
代码3 // 设置电话号码
}
void setRate(double r) {
rate = r;
}
void setDialledTime(double d) {
dialledTime = d;
}
double callCost( ) {
return dialledTime * rate;
}
void display( ) {
System.out.println("电话品牌: "+ brand +" 电话号码: "+ number);
System.out.println("通话时间: "+ dialledTime +" 费率: "+ rate);
System.out.println("话费: "+ callCost( ));
}
}
class Mobilephone extends Telephone {
String network;
double receivedTime; //被叫时间
Mobilephone(String b, String num, String net) {
代码4 //调用父类构造函数初始化电话品牌和号码
network = net;
}
String getNetwork( ) { return network; }
double getReceivedTime( ) { return receivedTime; }
void setNetwork(String n) {
network = n;
}
void setReceivedTime(double d) {
代码5 //设置被叫时间
}
double callCost( ) {
return (dialledTime + 0.5*receivedTime) * rate;
}
void display( ) {
System.out.println("电话品牌: "+ brand +" 电话号码: "+ number
+" 网络: "+ network);
System.out.println("主叫时间: "+ dialledTime +" 被叫时间: " +
receivedTime +" 费率: "+ rate);
System.out.println("话费: "+ callCost( ));
}
}
public class Inheritance {
public static void main(String[] args) {
Telephone tel;
Mobilephone mobile;
tel = new Telephone("TCL", "8309600");
mobile = new Mobilephone("Nokia", "13007091010","CDMA");
tel.setRate(0.2);
tel.setDialledTime(150);
mobile.setRate(0.4);
代码6 //设置主叫时间为80
mobile.setReceivedTime(120);
tel.display( );
System.out.println( );
代码7 //显示移动电话的信息
}
}