第4章-Java语言与面向对象作业习题与答案

上传人:张哥 文档编号:189846981 上传时间:2023-02-24 格式:DOC 页数:10 大小:44.50KB
收藏 版权申诉 举报 下载
第4章-Java语言与面向对象作业习题与答案_第1页
第1页 / 共10页
第4章-Java语言与面向对象作业习题与答案_第2页
第2页 / 共10页
第4章-Java语言与面向对象作业习题与答案_第3页
第3页 / 共10页
资源描述:

《第4章-Java语言与面向对象作业习题与答案》由会员分享,可在线阅读,更多相关《第4章-Java语言与面向对象作业习题与答案(10页珍藏版)》请在装配图网上搜索。

1、第4章 Java语言与面向对象作业习题与答案一、简答题 1什么是对象?什么是类?对象是一种抽象数据类型。它包含了事物的静态特征(属性)和动态特征(行为)两大特征。类是一组同种对象的集合与抽象。即是具有相同属性和方法的一组对象集合。 2Java语言的单继承是指什么?一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。 3在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用?当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。 4抽象类的用途

2、(1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;(2)设计出的类也具有更加良好的可扩展性。5什么是非静态的成员变量?非静态成员即为实例成员变量(没有加static修饰的变量)。6异常Exception和错误Error有什么不同?Java如何处理它们?答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态链接失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。异常表示另外一种“非同寻常”的错误。这种错误通常是不可预测,但可以被捕获且可以恢复。常见的异常情况包括内存不足、找不到所需文件等。对于错误,编程人员可以

3、通过对程序进行更仔细的检查,以避免这种错误。对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。7简单陈述Java的异常处理机制。答:Java采取“抛出捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。8简单陈述throw语句和throws关键字之间的差别。答:throw语句是在一个方法中用来直接抛出异常对象,其格式是:throw 异常对象;throws关键字是用一个方法声明首部,用来指出这个方法中可能产

4、生若干种异常,其格式:方法修饰符 返回类型 方法名(参数表)throws 异常类型表 /*方法体*/二、填空题1所有Java应用程序都必须包含的一个类方法是 main() 。2面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。 3方法重载与方法覆盖的不同有:方法重载是指允许在同一个类中定义多个同名方法,它们通过形参的个数或形参参数的类型来区别;方法覆盖是指在子类中重新定义了与父类中的方法同名的方法。 4面向对象程序设计语言的多态的事项方法主要有三种:方法重载、方法覆盖和接口。 5对象之间的信息通过消息传递机制来完成。 6成员变量的修饰符有(写出6种)public, friendly,

5、 protected, private, final, static。7整个类共同拥有的方法是用static修饰的方法或叫类成员方法;它具有统计一个类的实例个数等用途。 8引用父类中的成员用super;引用当前的类或对象用this。9在面向对象中,继承有两种含义,分别指在类的层次结构中,子类自动继承父类的特性和同一类的所有实例对象都具有所属类的特征。10在Java语言中,所有类都是Object类的子类。 11多继承问题指的是一个类有多个父类问题;在Java语言中通过接口方法解决多继承问题。 12接口是一种特殊的类,它只能定义一些抽象方法和常量。13在Java语言中,一组类和接口的集合通常被称为

6、类库或API包或应用程序接口。 14给出引用包的两种方法是:使用包名、类名做前缀;使用import语句。15Java语言异常处理三种方式是:捕获异常、声明异常和自定义异常 16程序设计过程中可能会出现的两种错误是编译错误和运行错误。17程序设计过程后的运行错误大致有三类。它们是逻辑错误、用户输入不合法和硬件设备出错。 18在Java语言中,用try-catch-final结构来捕获并处理异常。 19用户程序使用throw new 异常类名;抛出自己的异常。 20自定义异常类必须继承Exception类。三、选择题1下述声明中哪一种可以防止该类产生子类?Astatic class DEFBpri

7、vate calss DEFCabstract class DEFDfinal public class DEFEfinal abstract class DEF答案:D。Final防止有子类继承,因此可选择D、E。但final不可以和abstract连用,因此E也错。2如果要求子类可以在任何包中访问父类的成员,下面哪一个修饰符可以达到这个目标的最为严格的修饰符?ApublicBprivateCprotectedD无修饰符答案:C。A和C都可以做到这点,但A更为宽松,不仅仅是任何包中的子类,而且任何包中和包外的类都可以访问它。D只能被同一个包内的类访问,所以D不符合要求。而B比D更为严格。3程

8、序的封装性是如何实现的?A由应用程序的设计者实现B由应用程序的使用者实现C由应用程序的设计和使用者实现D由操作系统实现答案:A。 4下列哪个选项是错误的?A子类对象可以转化成父类对象B父类对象一般不转化成子类对象C子类对象与父类对象之间不能转化D子类对象转化为父类对象后,对于子类与父类共有的方法,仍然调用子类的方法。答案:C。 5下列哪个选项能体现Java语言的多态性?A匿名类B内布类C方法重载D方法覆盖答案:C。6下列哪个选项正确?AError类是一个RuntimeException异常B任何抛出一个RuntimeException异常的语句必须包含在try块内。C任何抛出一个Error对象

9、的语句必须包含在try块内。D任何抛出一个Exception异常的语句必须包含在try块内。答案:DError代表程序中不可捕获的问题,与Exception类同在一个层次,而RuntimeException是Exception的子类,所以Error类不可能是一个RuntimeException类型的异常;抛出一个RuntimeException异常不一定要在try块内,它是由JVM正常抛出,不需要throw和throws语句,因而也不一定要有catch语句去捕获,所以可以不出现在try块中;Error类型的问题是不可恢复的,多以没有规定要去捕获Error,因而也可以不出现在try块中;对于抛出

10、一个Exception对象的语句,如果没有包含在try块之内,有可能编译不能通过,因此选项D是必须的。7有如下程序,给出程序运行结果? import java.io.*;public class ExceptionTestpublic static void main(String args)trymethodA();catch(IOException e)System.out.println(“Caught Exception”);public void methcdA()throw new IOException();A代码不能编译B输出:Caught ExceptionC输出:Caugh

11、tIO Exception D程序正常运行后无任何信息输出答案:A首先,methcdA是非静态方法,不能出现在main中;其次,就算methcdA是静态方法,IOException是可检测异常,必须被catch捕获或是被throws声明,但程序中没有声明throws,所以try语句块不可能抛出IOException这个异常,而catch也就谈不到捕获它了,所以两个条件都没有满足,编译同样错误。在methcdA方法定义语句的前面加static,后面加上throws IOException,程序就可以调试通过了。 8有如下程序,在程序的point x处增加如下哪个选项程序才能通过编译?public

12、 class ExceptionTestcalss TestException extends Exceptionpublic void runTest() throws TestExceptionpublic void test()/point xrunTest();Athrows ExceptionBcatch(Exception)Cthrows RuntimeExceptionDcatch(TestException)答案:A没有try就不能有catch,所以B,D错;而C里边的RuntimeException是Exception的子类,不能用捕“小鱼”的工具去捕“大鱼”,所以错误;由于

13、runTest()抛出的是TestExcption,而TestExcption又是Excption的子类,因此用到runTest方法就必须抛出Excption异常。 9有如下程序,该程序的运行结果是?public class Exc_4public static void main(String args)try return; finally System.out.println(“Finally”);A程序无输出B程序输出“Finally”C代码可以通过编译但执行时产生异常D因为缺少catch块所以编译出错答案:B程序中有catch则必须有try,但反之不成立,所以D不对;关于try-ca

14、tch-finally的问题,程序中如果遇到return,则finally块先被执行,然后再执行return,而finally块后面的语句将不被执行。如果遇到System.exit(1),则退出JVM,整个程序退出,当然finally块其后的语句都不执行。10有如下程序,如果methodA()抛出IOException异常,该程序的运行结果是?class Exc_5public static void main(String args)try methodA();catch(IOException e)System.out.println(“caught IOException”); catc

15、h(Exception e) System.out.println(“caught Exception”); 答案:caught IOException如果methodA()抛出IOException异常,被语句5捕获,输出“caught IOException”四、编程题1试编写出要创建一个员工类Employee。这个类中的一个成员变量应该包括员工号empNum、姓名Name;其操作方法一个是用来设置set员工的工号,另一个操作方法是用来取得get员工工号。(建议按两步完成设计:一步是写出类的头结构;另外一步是完成成员声明。) class Employeepublic empNum;publ

16、ic Name;publicint setNum(int _empNum)int empNum=_empNum;return empNum;intvoid getNum()Employee A;int empNum=A.setNum(2001);System.out.println(员工工号为: + empNum);2创建一个名为List的显示类,它可以存储任何类型的对象,并可以在任何时候增加或删除对象。class ListprivateintmaxItems=100;privateintnumItems=0;private Object list=null;public List()list

17、=new ObjectmaxItems; public List(int _maxItems)maxItems=_maxItems;list=new ObjectmaxItems;publicvoid add(Object obj)listnumItems=obj;numItems+;publicvoid delete(int pos)for(int i=pos+1; i=maxItems);public String toString()String s=new String();for(int i=0; inumItems; i+)s+=n+listi.toString();return

18、s+n;publicclass ListTestpublicstaticvoid main(String args) List list=new List();list.add(new Double(10.0);list.add(new String(Java by Definition);list.add(new Integer(-10);System.out.println(list);System.out.println(Position 0:+list.get(1);list.delete(2);list.delete(0);System.out.println(List Size:+

19、list.getSize();程序运行结果:10.0Java by Definition-10Position 0:Java by DefinitionList Size:13创建帐号SavingsAccount类。用静态变量存储年利率。该类的每个对象都有一个私有实例变量savingBalance用来显示帐号里的钱数。提供方法calculateMonthlyInterest计算月利息(按照年利率乘以帐号里的钱数再除以12);该利息必须加到实例变量中。提供一个静态方法modifyInterestRate设置年利率。写一个测试程序CalculatorInterest来测试该类。建立两个该类对象,s

20、aver1和saver2,分别有人民币2000元和3000元。设年利率为4%。计算每个帐号的月利息及新的钱数。设年利率为5%。计算每个帐号下月的利息及新钱数。import java.io.*;publicclass CalculatorInterest/测试程序publicstaticvoid main(String args) SavingsAccount saver1=new SavingsAccount(2000);/声明两个对象 SavingsAccount saver2=new SavingsAccount(3000); SavingsAccount.modifyInterestRa

21、te(0.04);/设置利率为4% System.out.print(InterestRate);/输出利率 saver1.printR(); System.out.print(saver1s balance is:);/输出用户1的总额 saver1.printB(); System.out.print(saver2s balance is:);/输出用户2的总额 saver2.printB(); SavingsAccount.modifyInterestRate(0.05); /设置利率为5% System.out.print(InterestRate);/输出利率 saver1.prin

22、tR(); System.out.print(saver1s balance is:);/输出用户1的总额 saver1.printB(); System.out.print(saver2s balance is:);/输出用户2的总额 saver2.printB();class SavingsAccountprivatedoublesavingsBalance;/声明实例变量staticdoubleannualInterestRate;/声明静态变量public SavingsAccount(double x) savingsBalance=x; /构造函数publicvoid add(do

23、uble x) savingsBalance= savingsBalance+x; /计算总存款publicstaticvoid modifyInterestRate(double x) annualInterestRate=x; /年利率publicvoid printB() System.out.println(savingsBalance*(1+annualInterestRate); /输出总额publicvoid printR() System.out.println(annualInterestRate); /输出年利息程序运行结果:InterestRate0.04saver1s

24、balance is:2080.0saver2s balance is:3120.0InterestRate0.05saver1s balance is:2100.0saver2s balance is:3150.04设计一个交通工具类vehicle,其中的属性包括速度speed、种类kind;方法包括:设置颜色setColor,取得颜色getColor。再设计一个子类Car,增加属性passenger表示可容纳旅客人数,添加方法取得最大速度getMaxSpeed()。import java.awt.*;publicclass vehicleprivateintspeed;private St

25、ring kind;privateColorcolor;public vehicle()speed=2000;kind= TO;color=Color.red;public vehicle(int s, String k, Color c)speed=s;kind= k;color=c;publicvoid setColor(Color cl)color=cl;publicvoid getColor(String)if(equals(kind, k)return color; class Car extendsvehiclesuper(2000,DD,blue);intpassengers;p

26、ublicint getMaxSpeed()5编写3个接口A、B、C,它们之间具有继承关系。B接口继承与A,C接口继承B;且每个接口中包含一个常量字符串。试通过一个类ImpInterfaceABC继承这些接口,通过interfaceinheritanceTest类显示接口中常量字符串来展示接口的继承性。interface AString a=接口A中的常量;void showA();interface B extends AString b=接口B中的常量;void showB();interface C extends BString c=接口C中的常量;void showC();class

27、 ImpInterfaceABC implements Cpublicvoid showA()System.out.println(a); publicvoid showB()System.out.println(b); publicvoid showC()System.out.println(c); class interfaceinheritanceTestpublicstaticvoid main(String args)ImpInterfaceABC intf=new ImpInterfaceABC();intf.showA(); intf.showB(); intf.showC();程序运行结果:接口A中的常量接口B中的常量接口C中的常量* 学校学生图书管理应用程序。某国大学的学生图书馆管理系统。因为正常借阅是免费的,但超时借阅就要接受罚款处理,根据超时时间可分类处罚,一是在超时在两个月内,每本书按其价格的50%罚款;超过两个月的罚款按借阅图书的3倍处罚。处罚收费管理账单上包含有院系名称、学生姓名、信用图书超时间以及处罚金额。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!