第4章-Java语言与面向对象作业习题与答案_第1页
第4章-Java语言与面向对象作业习题与答案_第2页
第4章-Java语言与面向对象作业习题与答案_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

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

7、子类?A. static class DEFC. abstract class DEFB. private calss DEFD. final public class DEFE. final abstract class DEF答案:DoFinal防止有子类继承,因此可选择D、E。但final不可以和abstract 连用,因此 E也错。2. 如果要求子类可以在任何包中访问父类的成员,下面哪一个修饰符可以到达这个目标的最 为严格的修饰符?A. publicB. privateC. protectedD.无修饰符答案:CoA和C都可以做到这点,但 A更为宽松,不仅仅是任何包中的子类,而且任何包

8、中和包外 的类都可以访问它。 D只能被同一个包的类访问,所以D不符合要求。而 B比D更为严格。3. 程序的封装性是如何实现的?A. 由应用程序的设计者实现B. 由应用程序的使用者实现C. 由应用程序的设计和使用者实现D.由操作系统实现答案:A。4 以下哪个选项是错误的?A. 子类对象可以转化成父类对象B. 父类对象一般不转化成子类对象C. 子类对象与父类对象之间不能转化D. 子类对象转化为父类对象后,对于子类与父类共有的方法,仍然调用子类的方法。答案:Co5 以下哪个选项能表达Java语言的多态性?A.匿名类B.布类C.方法重载D.方法覆盖答案:Co6.以下哪个选项正确?A. Error 类是

9、一个 RuntimeException 异常B. 任何抛出一个 RuntimeException 异常的语句必须包含在 try块。C. 任何抛出一个 Error对象的语句必须包含在try块。D. 任何抛出一个 Exception异常的语句必须包含在try块。答案:DError代表程序中不可捕获的问题,与Exception类同在一个层次, 而RuntimeException是Exception的子类,所以Error类不可能是一个 RuntimeException 类型的异常;抛出一个 RuntimeException 异常不一定要在 try块,它是由JVM正常抛出,不需要throw和throws

10、语 句,因而也不一定要有 catch语句去捕获,所以可以不出现在 try块中;Error类型的问题是 不可恢复的,多以没有规定要去捕获Error,因而也可以不出现在try块中;对于抛出一个Exception对象的语句,如果没有包含在try块之,有可能编译不能通过,因此选项D是必须的。7 .有如下程序,给出程序运行结果?import java.io.*;public class Excepti on Test public static void main( Stri ng args) trySystem.out.pri ntln( “ CaughtException ); methodA();

11、 catch(IOExcepti on e) public void methcdA() throw new IOExcepti on();B.输出:Caught ExceptionD.程序正常运行后无任何信息输A.代码不能编译C. 输出:CaughtIO Exception答案:A首先,methcdA是非静态方法,不能出现在main中;其次,就算 methcdA是静态方法,lOException是可检测异常,必须被catch捕获或是被throws声明,但程序中没有声明throws, 所以try语句块不可能抛出lOException 这个异常,而 catch也就谈不到捕获它了,所以两 个条件都

12、没有满足,编译同样错误。在methcdA方法定义语句的前面加static ,后面加上throws lOException,程序就可以调试通过了。8 有如下程序,在程序的point x 处增加如下哪个选项程序才能通过编译?public class Excepti on Testcalss TestExcepti on exte nds Excepti on/point xB. catch(Exception)D. catch(TestException)public void run Test() throws TestExcepti on public void test()run Test(

13、);A. throws ExceptionC. throws RuntimeException答案:A没有try 就不能有catch,所以B, D错;而C里边的RuntimeException 是Exception 的子类,不能用捕“小鱼的工具去捕“大鱼,所以错误;由于 run Test()抛出的是TestExcptio n ,而TestExcption 又是 Excption 的子类,因此用到 run Test方法就必须抛出Excption 异常。9 .有如下程序,该程序的运行结果是?public class Exc_4public static void main( Stri ng arg

14、s)"Finally );B.程序输出“ Fin allyD.因为缺少catch块所以编译出错 try return;fin ally System.out.pri ntln(A.程序无输出C.代码可以通过编译但执行时产生异常答案:B程序中有catch那么必须有try,但反之不成立,所以D不对;关于try-catch-finally 的问题,程序中如果遇到return,那么fin ally块先被执行,然后再执行return,而fin ally块后面的语句将不被执行。如果遇到System.exit,那么退出JVM整个程序退出,当然fin ally块其后的语句都不执行。10.有如下程序,

15、如果 methodA()抛出lOException异常,该程序的运行结果是? class Exc_5 public static void main( Stri ng args) try methodA(); catch(lOExcepti on e)System.out.pri ntl n(“ caughtlOException ); 答案:catch(Exception e) System.out.println(“ caught Exception ); caught lOExcepti on如果 methodA()抛出 lOException 异常,被语句 5 捕获,输出 “ caug

16、ht lOException 四、编程题1试编写出要创立一个员工类 Employee。这个类中的一个成员变量应该包括员工号 empNum Name其操作方法一个是用来设置 set员工的工号,另一个操作方法是用来取得get员工工号。(建议按两步完成设计:一步是写出类的头结构;另外一步是完成成员声明。)class Employee public empNum;public Name;publicint setNum( int _empNum)int empNum=_empNum;return empNum;in tvoid getNum()Employee A;int empNum=A.setNu

17、m(2001);System.out.println("员工工号为: + empNum);2 创立一个名为List的显示类,它可以存储任何类型的对象,并可以在任何时候增加或删除对象。class Listprivate intmaxitems =100;private intnu mltems=0;private Object list =null ;public List() list =new Object maxitems; public List( int _maxltems)maxitems =_maxltems; list =new Object maxitems;publ

18、icvoid add(Object obj)list numltems=obj;nu mltems+;publicvoid delete( int pos)for (int i=pos+1; i< numltems; i+) list i-1= list i; nu mltems-;public Object get( int pos)return list pos;publici nt getSize()return numltems; publicboolea nisFull() return ( numltems>=maxltems);public Stri ng toStr

19、i ng() Stri ng s= new Stri ng();for (int i=0; i< numltems; i+)s+="n" +list i.toStri ng(); return s+ "n"ListTestpublicclass publicstaticvoidmain( Stri ng args)List list=new List();list.add( new Double(10.0);list.add( new Stri ng( "Java by Defi nitio n");list.add( new

20、In teger(-10);System. out .println(list);+list.get(1);System. out .println("Position 0:"list.delete(2);list.delete(0);System. out .println( "List Size:" +list.getSize();程序运行结果:10.0Java by Definition-10Position 0:Java by DefinitionList Size:13.创立SavingsAccount类。用静态变量存储年利率。该类的每个对象都

21、有一个私有实例变量savingBalanee 用来显示里的钱数。提供方法calculateMonthlylnterest计算月利息(按照年利率乘以里的钱数再除以12);该利息必须加到实例变量中。提供一个静态方法modifyl nterestRate 设置年利率。写一个测试程序 Calculatorl nterest来测试该类。建立两个该类对象,saverl和saver2,分别有人民币 2000元和3000元。设年利率为 4% 计算每个 的月利息与新的钱数。设年利率为5%计算每个下月的利息与新钱数。import java.io.*;publicclass Calculatorlnterest/

22、测试程序 publicstaticvoidmain( Stri ng args) SavingsAccount saver仁new SavingsAccount(2000);/ 声明两个对象Savin gsAcco unt saver2=new Savin gsAcco un t(3000);Savin gsAcco unt.modifyl nterestRate (0.04);System. out .print( saverl.pri ntR();System. out .print( 额saverl.pri ntB();System. out .print( 额saver2.pri nt

23、B();Savin gsAcco unt.System. out .print( saverl.pri ntR();"l nterestRate");"saverl ' s balanee is:");"saver2 ' s balanee is:");modifyl nterestRate (0.05);/设置利率为4%/输出利率/输出用户1的总/输出用户2的总/设置利率为5%/输出利率"l nterestRate");System. out .print( "saverl '

24、s balanee is:";/输出用户1的总saver1.pri ntB();/输出用户2的总System. out .print("saver2 ' s balanee is:" );额saver2.pri ntB();class SavingsAeeount/声明实例变量/声明静态变量 privatedoublesavingsBalanee ;statiedoubleannu all nterestRate ;publie SavingsAeeount( double x)sav in gsBala nee =x; /构造函数publievoid a

25、dd( double x) savingsBalanee = savingsBalanee+x; /计算总存款publiestatievoidmodify In terestRate(double x) annuallnterestRate =x; /年利率publievoid prin tB() System. out .println(savingsBalanee *(1+ annuallnterestRate ); /输出总额publievoid prin tR() System. out .println(annu all nterestRate ); /输出年利息程序运行结果:In

26、terestRate0.04saverl ' s balanee is:2080.0saver2 ' s balanee is:3120.0In terestRate0.05saverl ' s balanee is:2100.0saver2 ' s balanee is:3150.04.设计一个交通工具类vehiele,其中的属性包括速度speed、种类kind ;方法包括:设置颜色setColor,取得颜色getColor。再设计一个子类Car,增加属性passenger表示可容纳旅客人数,添加方法取得最大速度getMaxSpeed()。import jav

27、a.awt.*;publicclass vehicleprivate intspeed;private String kind ;private Color color ;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(Stri ng)if (equals(kind, k) return col

温馨提示

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

评论

0/150

提交评论