1一、选择题(必做题)【本题满分20分】1.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(A)。A、staticvoidmethod()B、publicvoidmethod()C、finalvoidmethod()D、abstractvoidmethod()2.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为(C)。A、隐藏B、覆盖C、重载D、Java不支持此特性3.下列关于修饰符混用的说法,错误的是():A.abstract不能与final并列修饰同一个类B.abstract类中不可以有private的成员C.abstract方法必须在abstract类中D.static方法中能处理非static的属性4.在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()“,该语句()A.调用类Worker中定义的super()方法B.调用类Person中定义的super()方法C.调用类Person的构造函数D.语法错误5.给出下列代码,如何使成员变量m被方法fun()直接访问?classTest{privateintm;publicstaticvoidfun(){...}}A)将privateintm改为protectedintmB)将privateintm改为publicintmC)将privateintm改为staticintmD)将privateintm改为intm《Java面向对象程序设计》期末考试26.在JAVA语言中,下面关于类的描述正确的是()。B.一个超类可以有多个子类C.子类可以使用超类的所有D.子类一定比超类有更多的成员方法7.读程序写结果:classA{publicintf(intx){returnx+1;}}classBextendsA{Publicintf(intx){returnx*x;}}publicclassE{Publicstaticvoidmain(Stringargs[]){Aa=newB();Intm=a.f(10);System.out.println(m);}8.读程序写结果:classFirst{publicFirst(){show();}publicvoidshow(){System.out.println(“IloveC++!”);}}publicclassSecondextendsFirst{publicvoidshow(){System.out.println(“IloveJava!”);}publicstaticvoidmain(String[]args){newSecond();}}39.读程序写结果:classA{inta;A(intb){a=b;}voidshow(){System.out.println(“a=”+a);}}publicclassClass1{publicstaticvoidmain(Stringargs[]){Aobj=newA(12345);booleanb=false;charch=97;obj.show();System.out.println(“b=”+b+”\tch=”+ch);}}10.publicclassTest1{publicstaticvoidchangeStr(Stringstr){str=welcome;}publicstaticvoidmain(String[]args){Stringstr=1234;changeStr(str);System.out.println(str);}}二、选做题【本题满分10分】1.编写一个类,该类对象为飞机,飞机汽油储备充足时可以起飞。可以起飞时,在命令行中输出“汽油储备量充足,飞机可以启动”。程序运行效果图如下所示:4【本题满分20分】2.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整型,输入的数据可能具有以下格式、12345123451234xyz456提示:程序通过命令行输入字符串,可能会产生IOException异常,所以程序使用catch(IOExceptione)来捕获这个可能产生的异常,并且输出提示信息。而将字符串转换为整数的时候,可能会产生NumberFormatException类型的异常,程序中使用catch(NumberFormatExceptionne)来捕获这个可能发生的异常,并且提示用户输入格式有错。输入一个整数字符串代码如下:BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));inta=Integer.parsenInt(in.readLine());【本题满分20分】3.定义Biology(生物)、Animal(动物)、Man(人)3个接口,其中Biology声明了breath()抽象方法,Animal接口声明了hasSex()和eat()抽象方法,Man接口声明了think()和study()抽象方法。定义NormalMan类实现上述3个接口,实现它们声明的抽象方法(仅显示相应的功能信息)。提示:在Java中,类只允许单重继承,但一个类可以实现多个接口,从而达到多重继承的目的。在Biology、Animal和Man接口中,仅声明抽象方法。NormalMan类实现Biology、Animal和Man接口。必须实现其中声明的所有抽象方法。5【本题满分30分】4.设计一个学生类Student,其属性有name(姓名)、age(年龄)和degree(学位)。由Student类派生出本科生类Undergraduate和研究生类Graduate,Undergraduate类增加属性specialty(专业),研究生类增加属性direction(研究方向)。每个类都有show()方法,用于输出属性信息。程序运行效果如下图所示:提示:Student类的构造方法仅初始化name、age和degree,Undergraduate和Graduate类的构造方法除调用Student类的构造方法外,还分别需要初始化自己新增加的成员变量specialty和direction.Student类的show()方法仅需要输出name、age和degree的值,Undergraduate和Graduate类的show()方法除调用Student类的show()方法外,还分别需要输出新增加的成员变量specialty和direction的值。【本题满分30分】5.编写程序,模拟银行账户功能。要求如下:属性:账号(account)、储户姓名(name)、地址(address)、存款余额(balance)、最小余额(minBalance)方法:存款(deposit)、取款(withdraw)、查询(query)根据用户操作显示储户相关信息。如存款操作后,显示储户原有余额、今日存款数额及最终存款余额;取款时,若最后余额小于最小余额,拒绝取款,并显示“至少保留余额:XXX”程序执行效果如下图所示: