程序设计题:类的继承与对象创建、多态与动态绑定

程序设计题<一> 类的继承与对象创建
要求:编写一个Java程序,程序中有一个父类Telephone,Telephone类中包含有电话品牌、电话号码、通话时间、费率等属性,以及计算话费和显示信息等方法。另外,程序中还有另一个类叫作Mobilephone,它是Telephone的子类,除了具有Telephone类的属性外,它还有自己的属性如网络类型、被叫时间,同时它有自己的计算话费和显示信息的方法。最后程序中应包含一个主类来使用上述两个类显示它们的信息。

【程序清单】
package com.example.test;
class Telephone {
String brand, number;
double dialledTime;
double rate;
Telephone(String b, String n) {
brand = b;
number = n;
}
String getBrand() {
return brand;
}
String getNumber() {
return number;
}
double rate(){
return rate;
}
double getDialledTime() {
return dialledTime;
}
void setBrand(String b) {
brand = b;
}
void setNumber(String n) {
number = n;
}
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) {
super(b, num);
network = net;
}
String getNetwork() {
return network;
}
double getReceivedTime() {
return receivedTime;
}
void setNetwork(String n) {
network = n;
}
void setReceivedTime(double d) {
receivedTime = d;
}
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(“苹果”, “17871978115”);
mobile = new Mobilephone(“华为”, “17871979112”, “CMDA”);
tel.setRate(0.2);
tel.setDialledTime(450);
mobile.setRate(0.4);
mobile.setDialledTime(30);
mobile.setReceivedTime(60);
tel.display();
System.out.println();
mobile.display();
}
}
【实验运行结果】
在这里插入图片描述
程序设计题<二> 多态与动态绑定
要求:设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是一个抽象类,它包含一些基本的学生信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate都是Student类的子类,它们之间的主要差别是计算课程成绩等级的方法有所不同,研究生的标准要比本科生标准高一些,如下表:
在这里插入图片描述

假设某班级里既有本科生也有研究生,请编写程序统计出全班学生的成绩等级显示出来。此题可以设计一个学生数组或者集合,能同时存放本科生和研究生对象。
【程序清单】
package com.example.test;
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 = “”;//代码1 //初始化courseGrade为空串
}
public abstract void calculateGrade();
public String getName() {
return name;
}
public String getType() {
return type;//代码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) {
courses[courseNumber] = 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++) {
total += courses[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(“小周”);
students[4] = new Postgraduate(“小王”);//代码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());
}
}
}
在这里插入图片描述

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值