版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章习题练习与参考答案第一部分:习题一、选择题1.abstract方法正确的声明是()A.publicabstractvoidadd();B.publicabstractadd();C.publicabstractvoidadd(){}D.publicvirtualadd();2.在源程序中定义类B和类C,编译时得到的结果是()A.类B和类C都可以成功地编译B.类B和类C都不能编译C.类B可以编译,类C不能编译D.类C可以编译,类B不能编译3.关于匿名内部类叙述正确的是()A.匿名内部类可以继承一个基类,不可以实现一个接口B.匿名内部类不可以定义构造器C.匿名内部类不能用于实参D.以上说法都不正确4.下面哪种情况下该类不能是抽象类()A.当一个类的一个或多个方法是抽象方法时B.当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时C.当一个类实现多个接口时D.当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时5.Java1.8版本之前的前提,Java特性中,不是abstractclass和interface的区别是()A.抽象类可以有构造方法,接口中不能有构造方法B.抽象类中可以有普通成员变量,接口中没有普通成员变量C.抽象类中不可以包含静态方法,接口中可以包含静态方法D.一个类可以实现多个接口,但只能继承一个抽象类6.以下关于多态的描述,哪一项是错误的()A."子类引用=new父类()"就是多态的一种使用形式B.Java中的多态,得益于向上转型C.Java中的多态,得益于运行时动态绑定D.多态可以使程序更灵活第2题代码:abstractclassB{
abstractvoidshow();
}
abstractclassCextendsB{}二、编程题1.编写一个Employee类,声明为抽象类,包含如下3个属性:name、id、salary。提供必要的构造器和抽象方法:work()。对于Manager类来说,他既是员工,还具有奖金(bonus)的属性。请使用继承的思想,设计CommonEmployee类和Manager类,要求类中提供必要的方法进行属性访问。2.编写一个Vehicle车辆类,将该类置为abstract抽象类,封装车辆类中必要的成员属性,并添加对应的setter()和getter()方法。封装一个抽象方法getToll()实现获取通行费的功能。在两个子类Car类和Truck类中,继承Vehicle类并实现getToll()方法,实现Car类和Truck类对象不同的收取高速通行费的功能(高速公路收费按照车型单公里的费用×行驶的公里数)。3.设计一个Shape接口和它的两个实现类Square和Circle,要求如下:(1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果。(2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积。4.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法voidprintCapitalLetter(),在接口InterfaceB中有个方法voidprintLowercaseLetter();然后封装一个类Print实现接口InterfaceA和InterfaceB,要求printCapitalLetter()方法实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文字母表的功能。再写一个主类TestInterface,在主类TestInterface的main方法中创建Print的对象并赋值给InterfaceA的变量a,对象a调用printCapitalLetter方法;最后再在主类TestInterface的main方法中创建Print的对象并赋值给InterfaceB的变量b,对象b调用printLowercaseLetter方法。5.实现名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个接口Add用于涨工资的操作。普通员工每次能涨10%,经理能涨20%,具体要求如下。(1)Person类属性:姓名name(string类型)、地址address(string类型)并写该类构造。(2)Employee类属性:工号ID(string类型)、工资wage(double类型)、工龄service_year(int型)并写出该类的构造方法。(3)Manager类属性:级别level(string类型),写出该类的构造方法。编写一个测试类,产生一个员工和一个经理并输出其具有的信息。
第二部分:参考答案一、选择题答案与解析1.答案:A解析:抽象方法声明格式:修饰符abstract返回值类型方法名(参数列表);。B缺少返回值;C有方法体{}不是抽象方法;D的virtual不是Java关键字。2.答案:A解析:类B是抽象类,有抽象方法show();类C继承B但也是abstract,不需要实现抽象方法。两个类都可以编译成功。3.答案:B解析:匿名内部类没有类名,所以无法定义构造器。A错误(可以实现接口);C错误(可以作为实参);B正确。4.答案:C解析:实现多个接口的类,如果实现了所有接口方法,可以不是抽象类。A、B、D三种情况都必须声明为abstract。5.答案:C解析:Java8之前,抽象类和接口都可以有静态方法。A、B、D都是正确区别。注意:Java8后接口可以有default方法和静态方法。6.答案:A解析:多态是"父类引用=new子类()",不是"子类引用=new父类()"。后者需要强制类型转换。B、C、D都是多态的正确描述。二、编程题参考答案第1题参考答案程序代码://抽象员工类
abstractclassEmployee{
protectedStringname;
protectedStringid;
protecteddoublesalary;
publicEmployee(Stringname,Stringid,doublesalary){
=name;
this.id=id;
this.salary=salary;
}
//抽象方法
publicabstractvoidwork();
//getter和setter
publicStringgetName(){returnname;}
publicvoidsetName(Stringname){=name;}
publicStringgetId(){returnid;}
publicvoidsetId(Stringid){this.id=id;}
publicdoublegetSalary(){returnsalary;}
publicvoidsetSalary(doublesalary){this.salary=salary;}
}
//普通员工类
classCommonEmployeeextendsEmployee{
publicCommonEmployee(Stringname,Stringid,doublesalary){
super(name,id,salary);
}
@Override
publicvoidwork(){
System.out.println("普通员工"+name+"在进行日常工作");
}
}
//经理类
classManagerextendsEmployee{
privatedoublebonus;//奖金
publicManager(Stringname,Stringid,doublesalary,doublebonus){
super(name,id,salary);
this.bonus=bonus;
}
@Override
publicvoidwork(){
System.out.println("经理"+name+"在进行管理工作,奖金:"+bonus);
}
publicdoublegetBonus(){returnbonus;}
publicvoidsetBonus(doublebonus){this.bonus=bonus;}
}
//测试类
publicclassEmployeeTest{
publicstaticvoidmain(String[]args){
Employeeemp=newCommonEmployee("张三","E001",5000);
Employeemgr=newManager("李四","M001",10000,5000);
emp.work();
mgr.work();
}
}运行结果:普通员工张三在进行日常工作经理李四在进行管理工作,奖金:5000.0第2题参考答案程序代码://抽象车辆类
abstractclassVehicle{
protectedStringbrand;//品牌
protectedStringcolor;//颜色
protecteddoublemiles;//行驶公里数
//抽象方法:计算通行费
publicabstractdoublegetToll();
//getter和setter
publicStringgetBrand(){returnbrand;}
publicvoidsetBrand(Stringbrand){this.brand=brand;}
publicStringgetColor(){returncolor;}
publicvoidsetColor(Stringcolor){this.color=color;}
publicdoublegetMiles(){returnmiles;}
publicvoidsetMiles(doublemiles){es=miles;}
}
//轿车类
classCarextendsVehicle{
privatedoublepricePerKm=0.5;//每公里0.5元
publicCar(Stringbrand,Stringcolor,doublemiles){
this.brand=brand;
this.color=color;
es=miles;
}
@Override
publicdoublegetToll(){
returnpricePerKm*miles;
}
}
//货车类
classTruckextendsVehicle{
privatedoublepricePerKm=1.5;//每公里1.5元
publicTruck(Stringbrand,Stringcolor,doublemiles){
this.brand=brand;
this.color=color;
es=miles;
}
@Override
publicdoublegetToll(){
returnpricePerKm*miles;
}
}
//测试类
publicclassVehicleTest{
publicstaticvoidmain(String[]args){
Vehiclecar=newCar("奥迪","黑色",100);
Vehicletruck=newTruck("解放","红色",100);
System.out.println("轿车通行费:"+car.getToll()+"元");
System.out.println("货车通行费:"+truck.getToll()+"元");
}
}运行结果:轿车通行费:50.0元货车通行费:150.0元第3题参考答案程序代码://形状接口
interfaceShape{
doublearea(doublea);
}
//正方形类
classSquareimplementsShape{
@Override
publicdoublearea(doubleside){
returnside*side;
}
}
//圆形类
classCircleimplementsShape{
@Override
publicdoublearea(doubleradius){
returnMath.PI*radius*radius;
}
}
//测试类
publicclassShapeTest{
publicstaticvoidmain(String[]args){
Shapesquare=newSquare();
Shapecircle=newCircle();
System.out.println("边长为2的正方形面积:"+square.area(2));
System.out.println("半径为3的圆形面积:"+String.format("%.2f",circle.area(3)));
}
}运行结果:边长为2的正方形面积:4.0半径为3的圆形面积:28.27第4题参考答案程序代码://接口A
interfaceInterfaceA{
voidprintCapitalLetter();
}
//接口B
interfaceInterfaceB{
voidprintLowercaseLetter();
}
//实现类(实现两个接口)
classPrintimplementsInterfaceA,InterfaceB{
@Override
publicvoidprintCapitalLetter(){
for(charc='A';c<='Z';c++){
System.out.print(c+"");
}
System.out.println();
}
@Override
publicvoidprintLowercaseLetter(){
for(charc='a';c<='z';c++){
System.out.print(c+"");
}
System.out.println();
}
}
//测试类
publicclassTestInterface{
publicstaticvoidmain(String[]args){
InterfaceAa=newPrint();
a.printCapitalLetter();
InterfaceBb=newPrint();
b.printLowercaseLetter();
}
}运行结果:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz第5题参考答案程序代码://涨工资接口
interfaceAdd{
voidaddSalary();
}
//Person类
classPerson{
protectedStringname;
protectedStringaddress;
publicPerson(Stringname,Stringaddress){
=name;
this.address=address;
}
}
//Employee类
classEmployeeextendsPersonimplementsAdd{
protectedStringID;
protecteddoublewage;
protectedintservice_year;
publicEmployee(Stringname,Stringaddress,StringID,doublewage,intservice_year){
super(name,address);
this.ID=ID;
this.wage=wage;
this.service_year=service_year;
}
@Override
publicvoidaddSalary(){
wage*=1.1;//涨10%
}
publicvoidshowInfo(){
System.out.println("姓名:"+name);
System.out.println("地址:"+address);
System.out.println("工号:"+ID);
System.out.println("工资:"+wage);
System.out.println("工龄:"+service_year+"年");
}
}
//Manager类
classManagerextendsEmployee{
privateStringlevel;
publicManager(Stringname,Stringaddress,StringID,doublewage,intservice_year,Stringlevel){
super(name,address,ID,wage,service_year);
this.level=leve
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川成都彭州市国经人力资源管理有限公司招聘备考题库及参考答案详解
- 2026江苏扬州工业职业技术学院人事代理及劳动合同制工作人员招聘7人备考题库含答案详解
- 2026广东东莞市望牛墩镇社区卫生服务中心招聘编外工作人员1人备考题库及参考答案详解1套
- 数字人民币商户拓展2026年实战操作模拟试卷及答案
- 2026监理工程师土建案例真题(含答案)
- 资产评估师2026年无形资产评估模拟测试(附答案)
- 2026招聘南宁市西乡塘区纪委监委行政辅助人员招聘6人备考题库及答案详解1套
- 2026浙江宁波市石化进出口有限公司招聘3人备考题库及答案详解1套
- 2026浙江丽水庆元县城投公司下属城发建设招聘工作人员6人备考题库及参考答案详解
- 2026年聊城市纪委监委机关所属事业单位公开选聘工作人员备考题库(10人)含答案详解
- (正式版)DB32∕T 5389-2026 太阳能光伏与建筑一体化应用技术规程
- 2025-2026统编版四年级语文下册第八单元综合素养测评卷(含答案)
- 2025~2026学年浙江杭州市拱墅区八年级上学期期末道德与法治、历史、地理试卷-初中地理
- 藏医理疗工作制度
- 2026春季苏教版(新教材)小学科学三年级下册(全册)各单元知识点复习要点梳理
- 2026年材料微观结构与力学性能的关系
- 2026年及未来5年中国长江内河港口建设行业全景评估及投资规划建议报告
- 2025年往年山师综评笔试题及答案
- 2026江西裕民银行招聘笔试参考题库及答案解析
- 2025年度中国建设银行远程智能银行中心客服代表社会招聘笔试历年典型考题及考点剖析附带答案详解
- 2025年浙江省基层法律服务工作者试题库(附含参考答案)
评论
0/150
提交评论