自考Java语言程序设计第五章以后课后习题.doc

上传人:李医生 文档编号:6059911 上传时间:2020-09-02 格式:DOC 页数:25 大小:84.50KB
返回 下载 相关 举报
自考Java语言程序设计第五章以后课后习题.doc_第1页
第1页 / 共25页
自考Java语言程序设计第五章以后课后习题.doc_第2页
第2页 / 共25页
自考Java语言程序设计第五章以后课后习题.doc_第3页
第3页 / 共25页
自考Java语言程序设计第五章以后课后习题.doc_第4页
第4页 / 共25页
自考Java语言程序设计第五章以后课后习题.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《自考Java语言程序设计第五章以后课后习题.doc》由会员分享,可在线阅读,更多相关《自考Java语言程序设计第五章以后课后习题.doc(25页珍藏版)》请在三一文库上搜索。

1、自考Java语言程序设计(一)第五张课后习题及答案自考Java语言程序设计(一)第五章类的继承课后习题五、类的继承l什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?2观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法。class SuperClassint data;voidsetData(intnewData)data=newDataintgetData()return dataclass SubClass extends SuperClassint suhData;void setSubData(intnewD

2、ata)suhData=new Data;intgetData()return subData;3“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?为什么?4. 在Java程序中,通过类的定义只能实现单重继承()5.下列哪些说法是正确的?A、 Java 语言只允许单一继承B、 Java 语言只允许实现一个接口C、 Java 语言不允许同时继承一个类并实现一个接口D、 Java 语言的单一继承使得代码更加可靠6.Java中所有类都是类_的子类。7.请写出下面程序的运行结果。public class Test extends TT public void main(Str

3、ing args) Test t = new Test(Tom); public Test(String s) super(s); System.out.println(How do you do?); public Test() this(I am Tom); www.xamda.CoMclass TT public TT() System.out.println(What a pleasure!); public TT(String s) this(); System.out.println(I am +s); 结果:_8.父类的成员在子类中的访问权限由决定。9.对象的使用包括引用对象的成

4、员变量和方法。通过运算符就能实现对对象成员变量的访问和对象10.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念。参考答案: l答:继承是面向对象程序设计中两个类之间的一种关系。当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个父类,则这种继承关系称为多重继承。2答:父类SuperCl

5、ass父类的域data来源:考试大的美女编辑们父类的方法setData(),getData()子类SubClass子类的域data,subData子类的方法setSubData(),setData(),getData()采集者退散3答:这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所有非私有的域和方法。如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目|考试大收集整理4. true5. A D6. Object7. 答:What a pleasure!I am TomHow do you do?8. 访问权限修

6、饰符9. “.”10.软件模型自考Java语言程序设计(一)第六章重载与多态课后习题六、重载与多态1.判断:接口中的所有方法都没有被实现。()2.方法重载是指 ( ) A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同考试大论坛B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的方法名字不同,但形参的个数或类型相同D.两个以上的方法取相同的方法名,并且方法的返回类型相同 3什么是方法的覆盖?方法的覆盖与域的隐藏有何不同?与方法的重载有何不同?4解释this和super的意义和作用。5什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么

7、优点? 6Java程序如何实现多态?有哪些方式?7根据下面的要求编程实现复数类ComplexNumber。(1)复数类ComplexNumber的属性m_dRealPart实部,代表复数的实数部分。m_dlmaginPart虚部,代表复数的虚数部分。(2)复数类ComplexNumber的方法ComplexNumber()构造方法,将实部、虚部都置为0。ComplexNumber(doubler,doublei)构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。getRealPart()获得复数对象的实部。getlmaginaryPart()获得复数对象

8、的虚部。setRealPart(doubled)把当前复数对象的实部设置为给定的形参的数字。setlmaginaryPart(doubled)把当前复数对象的虚部设置为给定形参的数字。complexAdd(ComplexNumberc)当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。complexAdd(doublec)当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。complexMinus(ComplexNumberc)当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。8什么是接口?为什么要定义接口?接口与类有

9、何异同?来源:考试大的美女编辑们9一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?10接口是否可以被继承?阅读下面的代码,试写出SubInterface中的抽象方法。interface SupInterfacepublic abstract int supMethod();interface SubInterface extends SupInterfacepublic abstract string subMethod();参考答案:1. true2.A3答:子类重新定义父类中已经存在的方法,称为方法的覆盖。注意:方法覆盖与域的隐藏不同。子类重新定义父类已有的域,并不

10、能完全取代它从父类那 里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不 再在子类的内存空间中占一席之地。与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。4答:关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象。考试大全国最大教育类网站(wwwExamda。com)5答:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点

11、,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖。6答:Java程序通过覆盖和重载两种方式来实现多态。覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法。7答:public class ch5_e5_12public static void main(String args)ComplexNumber cNumber_1 = new ComplexNumber(3,-5);ComplexNumber cNumber_2 = 本文来源:考试大网new ComplexNumber(2,2);double d = 10.0;Sy

12、stem.out.println(cNumber_1.toString() + 加 + cNumber_2.toString() + 等于 + cNumber_plexAdd(cNumber_2).toString();System.out.println(cNumber_1.toString() + 加 + d + 等于 + cNumber_plexAdd(d).toString();System.out.println(cNumber_1.toString() + 减 + cNumber_2.toString() + 等于 + cNumber_plexMinus(cNumber_2).to

13、String();System.out.println(cNumber_1.toString() + 减 + d + 等于 + cNumber_plexMinus(d).toString();System.out.println(cNumber_1.toString() + 乘 + cNumber_2.toString() + 等于 + cNumber_plexMulti(cNumber_2).toString();System.out.println(cNumber_1.toString() + 乘 + d + 等于 + cNumber_plexMulti(d).toString();cla

14、ss ComplexNumber/域private double m_dRealPart;private double m_dImaginPart;/构造方法ComplexNumber()m_dRealPart = 0.0;m_dImaginPart = 0.0;ComplexNumber(double r,double i)m_dRealPart = r;m_dImaginPart = i;ComplexNumber(ComplexNumber c)m_dRealPart = c.getRealPart();m_dImaginPart = c.getImaginaryPart();/get,

15、set方法double getRealPart()return m_dRealPart;double getImaginaryPart()return m_dImaginPart;void setRealPart(double d)m_dRealPart = d;void setImaginaryPart(double d)m_dImaginPart = d;/复数运算方法ComplexNumber complexAdd(ComplexNumber c)return new ComplexNumber(this.m_dRealPart + c.getRealPart(),this.m_dIma

16、ginPart + c.getImaginaryPart();ComplexNumber complexAdd(double c)return new ComplexNumber(this.m_dRealPart + c, this.m_dImaginPart);ComplexNumber complexMinus(ComplexNumber c)return new ComplexNumber(this.m_dRealPart - c.getRealPart(),this.m_dImaginPart - c.getImaginaryPart();ComplexNumber complexMi

17、nus(double c)来源:return new ComplexNumber(this.m_dRealPart - c, this.m_dImaginPart);ComplexNumber complexMulti(ComplexNumber c)return new ComplexNumber(this.m_dRealPart * c.getRealPart() - this.m_dImaginPart * c.getImaginaryPart(),this.m_dRealPart * c.getImaginaryPart()+ this.m_dImaginPart * c.getRea

18、lPart();ComplexNumber complexMulti(double c)return new ComplexNumber(this.m_dRealPart * c, this.m_dImaginPart * c);/toString()public String toString()return ( + m_dRealPart + + + m_dImaginPart + i + );8答:接口是用来实现类间多重继承功能的结构。接口与类相似,但是接口中只能包括常量和抽象方法。定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。9答

19、:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。10答:接口可以被继承。SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();两个。自考Java语言程序设计(一)第七章Java常用类库介绍课后习题七、Java 常用类库介绍1指出下列陈述是对还是错,并做出解释。(1)当String对象用= = 比较时,如果String包括相同的值则结果为

20、true。(2)一个String类的对象在其创建后可被修改。2对于下列描述,各写出一条语句完成要求的任务(1)比较s1中的串和s2中的串的内容的相等性;(2)用+=向串s1附加串;(3)判断s1中串的长度;来源:考试大3说明capacity()与length()用法上的差异?4如果ch为StringBuffer对象,ch=“Java Apple”,下列结果为何?(1)ch.insert(3,p)(2)ch.append(“Basic”)(3)ch.setlength(5)(4)ch.reverse()5Math类中提供用来常数和e的静态属性分别是什么?6下面关于Vector类的说法正确的是()

21、(1)类Vector在java.util包中。(2)一个向量(Vector)对象存放的是一组有序的对象。(3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加。(4)一个向量(Vector)对象中每个元素可以是不同类型的对象。7有三个字符串,编写程序找出其中最大者。8编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。9设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成。10设定一个有大小写字母的字符串和一个查找字符,使用类 String方法IndexOf()来判断在该字符串中该字符出现的次数。参考答案1答:(1

22、)错。用= =操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同。(2)错。String类的对象是常量。它们被创建后不可被修改。2答:(1)s1.equals(s1,s2);(2)s1+=s2;(3)s1.length();3答:capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。考试大收集整理4答:(1)结果:Javpa Applet(2)结果:Javpa AppletBasic(3)结果:ch长度变为5(4)结果:apvaJ5答:PI、 E6答:(3)7public class max1public st

23、atic void main(String args)String s1= Hello Java;String s2= Java Applet;String s3= Java;String s;if(pareTo(s2)0)s=s2;else s=s1;if(pareTo(s3)0)s=s3;Systrm.out.println(big=+s);8public class outpublic static void main(String args)String s1= Hello Java;StringBuffer bufup=new StringBuffer();StringBuffer

24、buflow=new StringBuffer();for(int I=0;Iif(s1.charAt(i)97)bufup.append(s1.charAt(i);bufup.append( );else buflow.append(s1.charAt(i);buflow.append( );System.out.println(s1= +s1);System.out.println( uppercase= +bufup);System.out.println( lowercase= +buflow);9public class prin_b public static void main(

25、String args)String s1=hello;String s2=bee;String s3=java;String s4=brove;String s5=bag;if(s1.indexOf(b)= =0)System.out.println(s1);if(s2.indexOf(b)= =0)System.out.println(s2);if(s3.indexOf(b)= =0)System.out.println(s3);if(s4.indexOf(b)= =0)System.out.println(s4);if(s5.indexOf(b)= =0)System.out.print

26、ln(s5);10public class ppppublic static void main(String args)String s1=abcdefghi;int num=0;for (int i=0;ii=s1.indexof(e,i);num+;System.out.print( s1=+s1+e=);if(num= =0)System.out.println( no found);else System.out.println(num);自考Java语言程序设计(一)第八章Java异常处理及输入输出流简介课后习题八、Java异常处理及输入输出流简介1列出5个常见的异常。2写出Jav

27、a语言的异常处理机制的优点。3为什么异常处理技术不应该用于常规的程序控制?4引起异常产生的条件是什么?5异常没有被捕获将会发生什么?6编写一个程序,以说明catch(Exception e)如何捕获各种异常。7下面的代码段中finally语句块会被执行吗?public class ExceptionExam3public static void main(String args)tryint a=new int3;System.exit(0);catch(ArrayIndexOutOfBoundsException e)System.out.println(发生了异常);finallySyst

28、em.out.println(Finally);8throws的作用是什么?9应在程序的什么地方使用异常处理?10下面的代码有什么错误吗?class ExceptionExamthrow new ExceptionExam();11异常类型匹配的处理方式。程序功能:首先输出“这是一个异常处理的例子”,然后在你程序中主动地产生一个 ArithmeticException 类型被0 除而产生的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException类的对象e的方法getMessage 给出异常的具体类型并显示出来。12根据所给创建自定义异常类的使用格式,编写一个自定义

29、异常的小程序。13什么叫流?流式输入输出有什么特点?14Java流被分为字节流、字符流两大流类,两者有什么区别?15File类有哪些构造函数和常用方法?16利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。17编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读。18位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制?19编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数。20编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.tx

30、t文件中。采集者退散21编写一个程序,从键盘输入10个整数,并将这些数据排序后在标准输出上输出。参考答案1答:内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处。来源:考试大的美女编辑们2答:(1)Java通过面向对象的方法进行异常处理,把各种异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态特 性的复杂提供了强有力的控制方式。(2)Java的异常处理机制使得处理异常的代码和“常规”代码分开,减少了代码的数量,增强了程序的可读性。(3) Java的异常处理机制使得异常事件可以沿调用栈自动向上传播,而不是C语言中通过函数的返回值来传播,这样可以传递更多的信息

31、,并且简化了代码的编写。 (4)由于把事件当成事件处理,利用类的层次性我们可以把多个具有相同父类的异常统一处理,也可以区分不同的异常分别处理,使用非常灵活。3答:a. 异常处理用于不经常发生但通常导致程序终止的情况,因此要求编程人员为编译器的优化执行实现异常处理。b. 常规控制结构的控制流程通常比异常的更为清晰、交流更高。c. 在发生异常,并且没有释放异常发生之前分配的资源时,堆栈是展开的,所以会出现一些问题。d.“额外的”异常会妨碍真正错误类型的异常。这种使程序员更难 以跟踪大量的异常。4答:异常产生的方式有3种。第一种是在某些内部错误时,Java虚拟机可以产生异常,该异常不在你的程序控制范

32、围内,通常不作处理。第二种是由程序代码中的错误引起,这种异常需要你的程序处理。第三种是通过使用throw语句手动生成的异常。5答:未捕获的异常最终会导致程序非正常终止。6public class ExceptionExampublic static void main(String args)tryint i=0;i=3/i;/将产生算术异常。catch(ArithmeticException e)/找到了匹配的异常,执行该catch块。System.out.println(发生了ArithmeticException异常);catch(AarryIndexOutOfBoundsExcepti

33、on e)/不是匹配的异常,且不会再捕获/异常,如果发生数组索引超出范围所产生的异常,将执行该catch块。System.out.println(发生了AarryIndexOutOfBoundsException异常);catch(Exception e)/前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。System.out.println(发生了异常); finally System.out.println(执行d Finally); 7答:无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块。即无论try是否正常结束,都会执行

34、finally定义的最后的代码。如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块。但本题中在try代 码块中执行了“System.exit(0);”语句,执行了这一语句后,Java虚拟机(JVM)将被终止。那么finally语句块一定不会被执行。8答:在某些情况下,如果一个方法产生自己不处理或无法处理的异常,它就必须在throws子句中声明该异常。9答:通常,可以采用两种方式来报告错误:返回值和异常。在Java中异常处理很常用,虽然返回错误代码在某些情况下是一种有效的方式,但是异常处理可以提供强大的结构化方法来处理异常。所以需要处理代码中的错误时就可

35、以采用异常的方法进行处理。10答:ExceptionExam不是继承(扩展)Throwable的子类,只有Throwable的子类可以由throw抛出。所以,这一段代码会出错。11public class ExceptionExam1public static void main(String args)tryint i=0;i=3/i;catch(ArithmeticException e)System.out.println(异常是:+e.getMessage();finallySystem.out.println(finally 语句被执行);注意:如果在catch 语句中声明的异常类是

36、Exception,catch 语句也能正确地捕获,这是因为Exception 是ArithmeticException 的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。12class Excp1 extends Exceptionclass Excp2 extends Excp1public class ExceptionExam7public static void main(String args) throws Exceptiontrythrow new Excp2();catch(Excp2 e)Sys

37、tem.out.println(catch1);throw new Excp1();catch(Excp1 e)System.out.println(catch2);throw new Exception();catch(Exception e)System.out.println(catch3);finallySystem.out.println(finally);说明:自定义异常类,关键是选择继承的超类必须是Exception或者其子类。用异常代表错误,而不要再使用方法返回值。13答:所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来源和目标的数据都统一

38、抽象为数据流。数据流可分为输入流和输出流,输入流代表从其他设备流入计算机的数据序列,输出流代表从计算机流向外部设备的数据序列。流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。所以流和队列一样,只能以“先进先出”的方式对其中的数据进行读写,而不能随意选择读写的位置。14答:两者都作为Object类的直接子类,基本输入流(无效Stream)和基本输出流(OutputStream)是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字符流的类。15答:构造函数有:(1)public

39、File(String pathname):创建一个对应于参数pathname的File类对象。参数pathname是包含目录和文件名的字符串。如果没有文件名,则代表目录。(2)public File(String parent , String child):该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称。(3)public File(File parent, String child):该构造函数与上面一个不同在于将parent的参数类型由String变为File,代表parent是一个已经创建的Fi

40、le类文件对象(指向目录)。常用方法有:(1)public boolean canWrite( ):返回文件是否可写。(2)public boolean canRead( ):返回文件是否可读。(3)public boolean createNewFile( ):当文件不存在时创建文件。16import java.io.*;class CopyFilepublic static void main(String args) String file1,file2 ;int ch = 0 ;try file1=args0;file2=args1;File无效Stream fis = new Fil

41、e无效Stream(file1);FileOutputStream fos=new FileOutputStream(file2);while (ch=fis.read()!=-1)fos.write(ch);fis.close();fos.close();catch(FileNotFoundException e)System.out.println(源文件:未找到!);catch(ArrayIndexOutOfBoundsException e)System.out.println(缺少运行参数!);System.exit(-1);catch (IOException e)System.out.println(e.toString();17答:import

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1