版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1【习题6】一、选择题BCCAAEF二、填空题1、编译时多态性(静态多态)运行时多态(动态多态)2、可扩充性接口性3、最终类三、简答题1、简述继承的声明格式。答:类的继承语法格式如下:[类修饰符]class类名[extends基类][implements接口列表]{ [成员变量声明] [构造方法定义] [成员方法定义]}说明:(1)类修饰符同类的声明,如public,default(缺省)。(2)类名必须符合标识符命名规则。(3)extends是关键字。(4)基类,可以是自定义的类,也可以是系统类库中的类。如果省略基类,其默认的基类是java.lang.Object类。(5)子类可以添加新的成员变量和成员方法,可以隐藏基类的成员变量或者覆盖基类的成员方法。(7)类之间的继承具有传递性。2、简述类的继承规则。答:根据继承规则,子类可以继承父类的成员变量和成员方法,还可以增加自己的成员变量。如果子类声明了与父类同名的成员变量,则在子类中父类的成员变量被隐藏。子类可以继承父类的方法,还可以增加自己的成员方法。子类对象可以使用从父类继承过来的方法。方法重写(或覆盖)是指子类重新定义从父类继承过来的方法,从而使子类具有自己的行为,满足自己的需要。如果子类定义了与父类同名的成员方法,则在子类中父类的成员方法被覆盖。子类不再继承父类的方法,即子类中不再存在父类的同名方法。3、分别解释关键字super与this的用法。答:this代表了当前对象的一个引用,可将其理解为对象的另一个名字,通过这个名字可以顺利地访问对象、修改对象的数据成员、调用对象的方法。this有以下三种使用场合:(1)访问当前对象的数据成员,使用形式如下:this.数据成员(2)访问当前对象的成员方法,使用形式如下:this.成员方法(3)当有重载的构造方法时,来引用同类的其他构造方法,使用形式如下:this(参数);super表示当前对象直接父类的对象,是当前对象直接父类对象的引用。super有以下三种使用场合:(1)用来访问直接父类中被隐藏的数据成员,使用形式如下:super.数据成员(2)用来调用直接父类中被重写的成员方法,使用形式如下:super.成员方法(3)用来调用直接父类的构造方法,使用形式如下:super(参数);4、简述抽象类的声明格式。答:声明抽象类的格式与声明类的格式相同,要用abstract修饰符指明它是一个抽象类:[public]abstractclass类名[extends基类][implements接口列表]{ [成员变量声明] [构造方法定义] [成员方法定义]}说明:public[可选]:抽象类默认不是public的,通常声明为public的。抽象类必须要有abstract修饰符。抽象类不能被实例化。5、简述类对象之间的类型转换规则。答:类对象之间的类型转换是指父类对象与子类对象之间在一定条件下的相互转换。转换规则如下:(1)子类对象可以隐式,也可以显式的转换为父类对象。父类对象获得子类对象,不能操作子类新增的成员变量,不能使用子类新增的成员方法。父类对象获得子类对象,可以操作子类继承或重写的成员变量和成员方法。如果子类重写了父类的某个方法,若父类对象获得子类对象会调用这个重写的方法。(2)处于相同类层次的类的对象不能进行转换。(3)父类对象在一定的条件下可以转换成子类对象,但必须使用强制类型转换。子类对象可以操作父类及子类的成员变量和成员方法。子类对象访问父类重写方法时,访问的是子类中的方法。子类对象接收父类对象,必须进行类型强制转换且必须保证父类对象引用的是该子类的对象,如果引用父类或其他子类的对象,会抛出类型不匹配异常。6、简述抽象类和接口的区别。答:表抽象类与接口的区别抽象类接口abstract修饰符不能省略abstract修饰符省略abstract修饰符子类和实现类抽象类的子类继承(extends)抽象类,单继承接口的实现类实现(implements)接口,多实现继承单继承多继承变量和方法除抽象方法外,有成员变量,也可以有普通方法只能有抽象方法,以及静态常量复用实现代码的复用不能实现代码的复用四、编程题1、假设银行Bank已经有按整年计算利息的一般方法,其中year只能取整数,比如按整年计算方法为:year*0.035*savedMoney。建设银行ConstructionBank和大连银行BankOfDalian是Bank的子类,隐藏继承的成员变量year,并重写计算利息的方法,即声明一个double型的变量year。比如,当year取值为5.216时,表示计算5年216天的利息。建设银行或大连银行把5.216的整数部分赋给隐藏的year,并用super调用Bank的计算利息的方法,求出5年的利息,再按自己的方法计算216天的利息。建设银行计算日利息的方法:day*0.0001*savedMoney,大连银行计算日利息的方法:day*0.00012*savedMoney。测试类,求8000元存5年236天两银行的利息差额。Bank类属性:savedMoney、year、interest、interestRate=0.035Bank类方法:computerInterestpublicclassBank{ intsavedMoney; intyear; doubleinterest; doubleinterestRate=0.035; publicdoublecomputeInterest(){ interest=year*interestRate*savedMoney; returninterest; } publicvoidsetInterestRate(doubleinterestRate){ erestRate=interestRate; }}publicclassConstructionBankextendsBank{ doubleyear; publicdoublecomputeInterest(){ super.year=(int)year; doubler=year-(int)year; intday=(int)(r*1000); doubleyearInterest=puteInterest(); doubledayInterest=day*0.0001*savedMoney; interest=yearInterest+dayInterest; System.out.println(savedMoney+"元存在建设银行"+super.year+"年零"+day+"天的利息:"+interest+"元"); returninterest; }}publicclassBankOfDalianextendsBank{ doubleyear; publicdoublecomputeInterest(){ super.year=(int)year; doubler=year-(int)year; intday=(int)(r*1000); doubleyearInterest=puteInterest(); doubledayInterest=day*0.00012*savedMoney; interest=yearInterest+dayInterest; System.out.println(savedMoney+"元存在大连银行"+super.year+"年零"+day+"天的利息:"+interest+"元"); returninterest; }}publicclassSaveMoney{ publicstaticvoidmain(String[]args){ intamount=8000; ConstructionBankbank_c=newConstructionBank(); bank_c.savedMoney=amount; bank_c.year=5.236; bank_c.setInterestRate(0.035); doubleinterest_c=bank_puteInterest(); BankOfDalianbank_d=newBankOfDalian(); bank_d.savedMoney=amount; bank_d.year=5.236; bank_d.setInterestRate(0.035); doubleinterest_d=bank_puteInterest(); System.out.println("两个银行利息相差"+(interest_c-interest_d)+"元"); }}2、(1)定义动物类Animal,在类中定义属性和方法:私有属性sex,表示性别,数据类型为boolean;私有属性age,表示年龄,数据类型为int;属性的getters和setters方法;在类的构造方法中设置性别初始值为false;公有方法Introduce(),用于介绍动物:
I)若字段sex属性的值为true,方法返回一个字符串"ThisisamaleAnimal!";
II)若字段sex属性的值为false,则方法返回一个字符串"ThisisafemaleAnimal!"。(2)由基类Animal创建派生类Dog,在派生类中实现方法重写。创建公有类Dog,它是从基类Animal中派生出的;在类Dog的构造方法中,设置属性sex的初始值为true;在类Dog中重写基类Animal的方法Introduce:
I)若属性Sex的值为true,方法返回一个字符串"ThisisamaleDog!";
II)若属性Sex的值为false,则方法返回一个字符串"ThisisafemaleDog!"。(3)定义测试类AnimalTest,在程序主方法中实例化类的对象,调用方法输出介绍动物的字符串:实例化Animal的一个对象ani,调用类的方法Introduce(),并输出方法返回的字符串;实例化Dog的一个对象dog,调用类的方法Introduce(),并输出方法返回的字符串。publicclassAnimal{ privatebooleansex; privateintage; publicbooleangetSex(){ returnsex; } publicvoidsetSex(booleansex){ this.sex=sex; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicAnimal(){ sex=false; } publicvoidIntroduce(){ if(sex==true) System.out.println("ThisisamaleAnimal!"); else System.out.println("ThisisafemaleAnimal!"); }}publicclassDogextendsAnimal{ publicDog(){ setSex(true); } publicvoidIntroduce(){ if(getSex()==true) System.out.println("ThisisamaleDog!"); else System.out.println("ThisisafemaleDog!"); }}publicclassTestAnimal{ publicstaticvoidmain(String[]args){ Animalani=newAnimal(); ani.Introduce();Dogdog=newDog();dog.Introduce(); }}3、要求设计abstract类,类名为Employee,类内有抽象方法earning(),功能是计算工资。Employee的子类有YearWorker、MonthWorker、WeekWorker。YearWorker对象按年领取薪水,每年年薪6万,MonthWorker按月领取薪水,每月3000元,WeekWorker按周领取薪水,每周500元。有一个Company类,该类有两个属性,一个是用Employee数组作为属性,存放所有的员工,一个是salaries属性,存放该公司每年该支付的总薪水,paySalaries方法能计算一年需支付的薪水总额。测试类定义29名员工,员工编号0-28,能被3整除的员工为WeekWorker,除3余数为1的是MonthWorker,除3余数为2的是YearWorker,测试类输出该公司支付总金额。publicabstractclassEmployee{ publicabstractdoubleearning();}publicclassYearWorkerextendsEmployee{ publicdoubleearning(){ return60000; }}publicclassMonthWorkerextendsEmployee{ publicdoubleearning(){ return12*3000; }}publicclassWeekWorkerextendsEmployee{ publicdoubleearning(){ return52*500; }}publicclassCompany{ Employee[]e; doublesalaries=0; publicCompany(Employee[]e){ this.e=e; } publicdoublepaySalaries(){ for(inti=0;i<e.length;i++) salaries=salaries+e[i].earning(); returnsalaries; }}publicclassTestSalary{ publicstaticvoidmain(String[]args){ Employee[]e=newEmployee[29]; inti; for(i=0;i<e.length;i++){ if(i%3==0) e[i]=newWeekWorker(); elseif(i%3==1) e[i]=newMonthWorker(); else e[i]=newYearWorker(); } Companycompany=newCompany(e); System.out.println(company.paySalaries()); }}4、(1)编写DogState接口,接口中有showState方法。(2)编写若干个实现DogState接口的类,负责刻画小狗的各种状态。meetEnemyState(狂叫)、meetFriendState(晃动尾巴)、meetAnotherDog(嬉戏)、SoftlyState(听主人命令)。(3)编写Dog类,有DogState定义的属性state,有show方法,在该方法中回调showState方法。(4)编写测试类,测试小狗的各种状态。publicinterfaceDogState{ voidshowState();}publicclassmeetEnemyStateimplementsDogState{ publicvoidshowState(){ System.out.println("狂叫"); }}publicclassmeetFriendStateimplementsDogState{ publicvoidshowState(){ System.out.println("晃动尾巴"); }}publicclassmeetAnotherDogimplementsD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗AI对基层医疗服务的赋能
- 线上智能家居技术攻关协议
- 小学辅导教学培训合作协议
- 2026年商场年度营业员服务与消防知识培训计划
- 跨文化管理培训项目合作合同
- 电玩城场地装修设计协议2026
- 失败容忍条款协议:环保设备销售合作
- 2026年市场消防安全责任人任命书
- 2026年提高农民工劳动合同签订率与质量的对策
- 肝硬化患者血浆B型利钠肽水平与肝功能状态的深度关联研究
- 《西游记》与中国传统文化学习通超星期末考试答案章节答案2024年
- 民法典与生活同行宣传手册
- GB/T 15822.3-2024无损检测磁粉检测第3部分:设备
- DB50T 231-2024 城市桥梁养护技术规程
- 医共体信息化项目建设方案(技术方案)
- DB11T 500-2024 城市道路城市家具设置与管理规范
- 耳鼻喉科普小知识问答
- 高血压饮食指导课件
- GB/T 3477-2023船用风雨密单扇钢质门
- 汽车维修售后业务合作协议书
- 2017年福建省中考英语试题及答案
评论
0/150
提交评论