第八次实验
实验 1:中国人、北京人和美国人
1. 实验要求:
编写程序模拟中国人、 美国人是人, 北京人是中国人。
除主类外, 程序中还有 4 个类:People 、
ChinaPeople 、 AmericanPeople 和 BeijingPeople 类。要求如下:
1) People 类有权限是 protected 的 double 型成员变量 height 和 weight ,以及 public
void speakHello ( )、 public
voidaverageHeight
( ) 和 public
void
averageWeight
()方法。
(2)
ChinaPeople 类是 People 的子类,新增了 public
void averageHeight ()和 public
voidaverageWeight ()方法。
(3)
AmericanPeople
类是 People 的子类, 新增方法 public void AmericanBoxing () 。
要求 AmericanPeople 重写父类的
public void speakHello
()、 public void
averageHeight
()和 public void averageWeight
()方法。
(4)
BeijingPeople
类是 ChinaPeople
的子类,新增
public void beijingOpera
()方
法。
实验代码:验结果:
实验分析:
方法重写时要保证方法的名字、类型、参数的个数和类型同父类的某个方法完全想同。这样,子类继承的方法才能被隐藏。
子类在重写方法时,如果重写的方法是static 方法, static 关键字必须保留;如果重
写的方法是实例方法,重写时不可以用static 修饰。
如果子类可以继承父类的方法,子类就有权利重写这个方法,子类通过重写父类的方法可以改变父类的具遗体行为。
实验后的练习:
People 类中的
public void speakHello()
public void averageHeight()
public void averageWeight()
三个方法的方法体中的语句是否可以省略。
答:可以省略,因为省略后结果没有变化
实验 2:银行计算利息
实验要求:
假设银行 bank 已经有了按整年 year 计算利息的一般方法, 其中 year 只能取正整数。
比如,按整年计算的方法:
Double computerInternet(){
Interest=year**saveMoney;
Return interest;
}
建设银行 constructionBank 是 bankde 子类,准备隐藏继承的成员变量 year ,并重写计算
利息的方法,即自己声明一个 double 型的 year 变量。要求 constructionbank 和
bankofDalian 类是 bank 类的子类, constructionbank 和 bankofdalian 都使用 super 调用
隐藏的按整年计算利息的方法。
2. 实验代码:
验结果:
实验分析:
(1)
子类不继承父类的构造方法,因此子类在其构造方法中需使用
super 来调用父类的
构造方法,并且 super 必须是子类构造方法中的头一条语句。
2) 当 super 调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量或继承的成员变量。
实验后的练习:
参照建设银行或大连银行,在编写一个商业银行,让程序输出 8000 元存在商业银行 8 年零
天的利息。验要求:
要求有一个 abstract 类,类名为 Employee。Employee 的子类有 YearWorker 、MonthWorker 、
WeekWorker。
YearWorker 对象按年领取薪水, MonthWorker 按月领取薪水、 WeekWorker 按周领取的薪水。
Employee 类有一个 abstract 方法:
public abstract earnings();
子类必须重写父类的 earings() 方法,给出各自领取报酬的具体方式。
有一个 Company类,该类用 Employee 对象数组作为成员, Employee 对象数组的单元可以是 YearWorker 对象的上转型对象、 MonthWorker 独享的上转型独享或 weekworker 对象的上转型独享。程序能输出 Company对象一年需要支付的薪水总额。
实验代码:
abstract class Employee{
public abstract double earnings();
}
class YearWorker extends Employee{
public double earnings(){
return 12000;
}
}
class MonthWorker extends Employee{
public double earnings(){
return 12*2300;
}
}
class WeekWorker extends Employee{
public double earnings(){
return 52*780;
}
}
class Company{
Employee[] employee;
double salaries=0;
Company(Employee[] employee){
=employee;
}
public double salariesPay(){
salaries=0;
for(int i=0;i<;i++){
salaries=salaries+employee[i].earnings();
}
return salaries;
}
}
public class CompanySalary{
public static void main(String args[]){
Employee[] employee=new Employee[29];
for(int i=0;i<;i++){
if(i%3==0)
employee[i]=new WeekWorker();
else if(i%3==1)
employee[i]=new MonthWorker();
else if(i%3==2)
employee[i]=new YearWorker();
}
Company company=new Company(employee);
" 公司薪水总额 :"+()+" 元 ");
}
}
实验结果:
实验分析:
尽管 abstract 类不能创建对象,但 abstract 类声明的对象可以存放子类对象的引用,即成为子类对象的上转型对象。
实验后的练习:
(1) 子类 yearworker 如果不重写 earnings ()方法,程序编译是提示怎么样的错误。
YearWorker 不是抽象的,并且未覆盖 Employee 中的抽象方法 earnings()
class YearWorker extends Employee{
(2) 在增加一种雇员,并计算公司一年的总薪水。
class DayWorker extends Employee{
public double earnings(){
return 365*100;
}
}
将 for 语句改写为:
for(int i=0;i<;i++){
if(i%4==0)
employee[i]=new WeekWorker();
else if(i%4==1)
employee[i]=new MonthWorker();
else if(i%4==2)
employee[i]=new YearWorker();
else if(i%4==3)
employee[i]=new DayWorker();
}
相关热词搜索: 实验报告 第八次 实验 计划 第八次实验报告总结计划x版权所有:演说范文网 2010-2025 未经授权禁止复制或建立镜像[演说范文网]所有资源完全免费共享
Powered by 演说范文网 © All Rights Reserved.。京ICP备20027742号