1、第八次实验报告第八次实验报告LTpublic class ChinaPeople extends People public void speakHello() System.out.println(您好); public void averageHeight() height=168.78; System.out.println(中国人的平均身高:+height+厘米); public void averageWeight() weight=65; System.out.println(中国人的平均体重:+weight+千克); public void chinaGongfu() Syste
2、m.out.println(坐如钟,站如松,睡如弓); /AmericanPeople.javapublic class AmericanPeople extends People public void speakHello () System.out.println(How do you do); public void averageHeight() height=176; System.out.println(Americans average height:+height+厘米); public void averageWeight() weight=75; System.out.p
3、rintln(Americans average weight:+weight+ kg); public void americanBoxing() System.out.println(直拳,勾拳,组合拳); /BeijingPeople.javapublic class BeijingPeople extends ChinaPeople public void averageHeight() height=172.5; System.out.println(北京人的平均身高:+height+厘米); public void averageWeight() weight=70; System
4、.out.println(北京人得平均体重:+weight+千克); public void beijingOpera() System.out.println(花脸、青衣、花旦和老生); /Example.javapublic class Example public static void main(String arg) ChinaPeople chinaPeople=new ChinaPeople(); AmericanPeople americanPeople=new AmericanPeople(); BeijingPeople beijingPeople=new BeijingP
5、eople(); chinaPeople.speakHello(); americanPeople.speakHello(); beijingPeople.speakHello(); chinaPeople.averageHeight(); americanPeople.averageHeight(); beijingPeople.averageHeight(); chinaPeople.averageWeight(); americanPeople.averageWeight(); beijingPeople.averageWeight(); chinaPeople.chinaGongfu(
6、); americanPeople.americanBoxing(); beijingPeople.beijingOpera(); beijingPeople.chinaGongfu(); 3.实验结果:4.实验分析:(1)方法重写时要保证方法的名字、类型、参数的个数和类型同父类的某个方法完全想同。这样,子类继承的方法才能被隐藏。(2)子类在重写方法时,如果重写的方法是static方法,static关键字必须保留;如果重写的方法是实例方法,重写时不可以用static修饰。(3)如果子类可以继承父类的方法,子类就有权利重写这个方法,子类通过重写父类的方法可以改变父类的具遗体行为。5.实验后的练习
7、:People类中的public void speakHello() public void averageHeight() public void averageWeight() 三个方法的方法体中的语句是否可以省略。答:可以省略,因为省略后结果没有变化 实验2:银行计算利息1.实验要求:假设银行bank已经有了按整年year计算利息的一般方法,其中year只能取正整数。比如,按整年计算的方法:Double computerInternet()Interest=year*0.35*saveMoney;Return interest;建设银行constructionBank是bankde 子类
8、,准备隐藏继承的成员变量year,并重写计算利息的方法,即自己声明一个double型的year变量。要求constructionbank和bankofDalian类是bank类的子类,constructionbank和bankofdalian都使用super调用隐藏的按整年计算利息的方法。2.实验代码:/Bank.javapublic class Bank int savedMoney; int year; double interest; double interestRate=0.29; public double computerInterest() interest=year*inte
9、restRate*savedMoney; return interest; public void setInterestRate( double rate) interestRate=rate; / ConstructionBank.javapublic class ConstructionBank extends Bank double year; public double computerInterest() super.year=(int)year; double r=year-(int)year; int day=(int)(r*1000); double yearInterest
10、=puterInterest(); double dayInterest=day*0.0001*savedMoney; interest=yearInterest+dayInterest; System.out.printf(%d元存在建设银行%d年零%d天的利息:%f元n,savedMoney,super.year,day,interest); return interest; / BankOfDalian.javapublic class BankOfDalian extends Bank double year; public double computerInterest() supe
11、r.year=(int)year; double r=year-(int)year; int day=(int)(r*1000); double yearInterest=puterInterest(); double dayInterest=day*0.00012*savedMoney; interest=yearInterest+dayInterest; System.out.printf(%d元存在大连银行%d年零%d天的利息:%f元n,savedMoney,super.year,day,interest); return interest; / SaveMoney.javapublic
12、 class SaveMoney public static void main(String args) int amount=8000; ConstructionBank bank1=new ConstructionBank(); bank1.savedMoney=amount; bank1.year=8.236; bank1.setInterestRate(0.035); double interest1=puterInterest(); BankOfDalian bank2=new BankOfDalian(); bank2.savedMoney=amount; bank2.year=
13、8.236; bank2.setInterestRate(0.035); double interest2=puterInterest(); System.out.printf(两个银行利息相差%f元n,interest2-interest1); 3.实验结果:4.实验分析:(1)子类不继承父类的构造方法,因此子类在其构造方法中需使用super来调用父类的构造方法,并且super必须是子类构造方法中的头一条语句。(2)当super调用被隐藏的方法时,该方法中出现的成员变量是被子类隐藏的成员变量或继承的成员变量。5.实验后的练习:参照建设银行或大连银行,在编写一个商业银行,让程序输出8000元存
14、在商业银行8年零236天的利息。/Bank.javapublic class Bank int savedMoney; int year; double interest; double interestRate=0.29; public double computerInterest() interest=year*interestRate*savedMoney; return interest; public void setInterestRate( double rate) interestRate=rate; / CommercialBankpublic class Commerci
15、alBank extends Bank double year; public double computerInterest() super.year=(int)year; double r=year-(int)year; int day=(int)(r*1000); double yearInterest=puterInterest(); double dayInterest=day*0.00012*savedMoney; interest=yearInterest+dayInterest; System.out.printf(%d元存在商业银行%d年零%d天的利息:%f元n,savedM
16、oney,super.year,day,interest); return interest; / SaveMoney.java public class SaveMoney public static void main(String args) int amount=8000; CommercialBank bank=new CommercialBank(); bank.savedMoney=amount; bank.year=8.236; bank.setInterestRate(0.035); double interest=puterInterest(); 实验3:公司支出的总薪水1
17、.实验要求:要求有一个abstract类,类名为Employee。Employee的子类有YearWorker、MonthWorker、WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水、WeekWorker按周领取的薪水。Employee类有一个abstract方法:public abstract earnings();子类必须重写父类的earings()方法,给出各自领取报酬的具体方式。有一个Company类,该类用Employee对象数组作为成员,Employee对象数组的单元可以是YearWorker对象的上转型对象、MonthWorker独
18、享的上转型独享或weekworker对象的上转型独享。程序能输出Company对象一年需要支付的薪水总额。2.实验代码: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
19、 public double earnings() return 52*780; class Company Employee employee; double salaries=0; Company(Employee employee) this.employee=employee; public double salariesPay() salaries=0; for(int i=0;iemployee.length;i+) salaries=salaries+employeei.earnings(); return salaries; public class CompanySalary
20、 public static void main(String args) Employee employee=new Employee29; for(int i=0;iemployee.length;i+) if(i%3=0) employeei=new WeekWorker(); else if(i%3=1) employeei=new MonthWorker(); else if(i%3=2) employeei=new YearWorker(); Company company=new Company(employee); System.out.println(公司薪水总额:+comp
21、any.salariesPay()+元); 3.实验结果:4.实验分析:尽管abstract类不能创建对象,但abstract类声明的对象可以存放子类对象的引用,即成为子类对象的上转型对象。5.实验后的练习:(1)子类yearworker如果不重写earnings()方法,程序编译是提示怎么样的错误。YearWorker 不是抽象的,并且未覆盖 Employee 中的抽象方法 earnings()class YearWorker extends Employee(2)在增加一种雇员,并计算公司一年的总薪水。class DayWorker extends Employeepublic double earnings()return 365*100;将for语句改写为:for(int i=0;iemployee.length;i+) if(i%4=0) employeei=new WeekWorker(); else if(i%4=1) employeei=new MonthWorker(); else if(i%4=2) employeei=new YearWorker(); else if(i%4=3) employeei=new DayWorker();
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2