自考Java语言程序设计一第五章以后课后习题及答案.docx
《自考Java语言程序设计一第五章以后课后习题及答案.docx》由会员分享,可在线阅读,更多相关《自考Java语言程序设计一第五章以后课后习题及答案.docx(35页珍藏版)》请在冰豆网上搜索。
自考Java语言程序设计一第五章以后课后习题及答案
自考Java语言程序设计
(一)第五张课后习题及答案
自考Java语言程序设计
(一)第五章类的继承课后习题
五、类的继承
l.什么是继承?
什么是父类?
什么是子类?
继承的特性可给面向对象编程带来什么好处?
什么是单重继承?
什么是多重继承?
2.观察下面的程序片断,指出其中的父类和子类,以及父类和子类的各个域和方法。
classSuperClass
{
intdata;
voidsetData(intnewData)
{
data=newData~
}
intgetData()
{
returndata~
}
}
classSubClassextendsSuperClass
{
intsuhData;
voidsetSubData(intnewData)
{
suhData=newData;
}
intgetData()
{
returnsubData;
}
}
3.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否正确?
为什么?
4.在Java程序中,通过类的定义只能实现单重继承()
5.下列哪些说法是正确的?
A、Java语言只允许单一继承
B、Java语言只允许实现一个接口
C、Java语言不允许同时继承一个类并实现一个接口
D、Java语言的单一继承使得代码更加可靠
6.Java中所有类都是类________的子类。
7. 请写出下面程序的运行结果。
publicclassTestextendsTT{
publicvoidmain(Stringargs[]){
Testt=newTest("Tom");
}
publicTest(Strings){
super(s);
System.out.println("Howdoyoudo?
");
}
publicTest(){
this("IamTom");
}
}www.Examda.CoM
classTT{
publicTT(){
System.out.println("Whatapleasure!
");
}
publicTT(Strings){
this();
System.out.println("Iam"+s);
}
}
结果:
________
8.父类的成员在子类中的访问权限由决定。
9.对象的使用包括引用对象的成员变量和方法。
通过运算符就能实现对对象成员变量的访问和对象
10.Java是面向对象语言,对象是客观事物的,对象与之是一一对应的,它是很具体的概念。
参考答案:
l.答:
继承是面向对象程序设计中两个类之间的一种关系。
当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系。
被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。
面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。
如果一个类只能有一个父类,则这种继承关系称为单重继承;如果一个类可以有多个父类,则这种继承关系称为多重继承。
2.答:
父类SuperClass
父类的域data来源:
考试大的美女编辑们
父类的方法setData(),getData()
子类SubClass
子类的域data,subData
子类的方法setSubData(),setData(),getData()采集者退散
3.答:
这种说法是错误的,因为子类不一定能继承父类的所有域和方法,它只能继承所有非私有的域和方法。
如果子类在继承之外自己定义的域和方法数目小于父类中私有成员的数目,则子类的域和方法的数目小于父类的域和方法的数目|考试大收集整理
4.true
5.AD
6.Object
7.答:
Whatapleasure!
IamTom
Howdoyoudo?
8.访问权限修饰符
9.“.”
10.软件模型
自考Java语言程序设计
(一)第六章重载与多态课后习题
六、重载与多态
1.判断:
接口中的所有方法都没有被实现。
()
2.方法重载是指()
A.两个或两个以上的方法取相同的方法名,但形参的个数或类型不同考试大论坛
B.两个以上的方法取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的方法名字不同,但形参的个数或类型相同
D.两个以上的方法取相同的方法名,并且方法的返回类型相同
3.什么是方法的覆盖?
方法的覆盖与域的隐藏有何不同?
与方法的重载有何不同?
4.解释this和super的意义和作用。
5.什么是多态?
面向对象程序设计为什么要引人多态的特性?
使用多态有什么优点?
6.Java程序如何实现多态?
有哪些方式?
7.根据下面的要求编程实现复数类ComplexNumber。
(1)复数类ComplexNumber的属性
·m_dRealPart实部,代表复数的实数部分。
·m_dlmaginPart虚部,代表复数的虚数部分。
(2)复数类ComplexNumber的方法
·ComplexNumber()构造方法,将实部、虚部都置为0。
·ComplexNumber(doubler,doublei)构造方法,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。
·getRealPart()获得复数对象的实部。
·getlmaginaryPart()获得复数对象的虚部。
·setRealPart(doubled)把当前复数对象的实部设置为给定的形参的数字。
·setlmaginaryPart(doubled)把当前复数对象的虚部设置为给定形参的数字。
·complexAdd(ComplexNumberc)当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。
·complexAdd(doublec)当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。
·complexMinus(ComplexNumberc)当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。
8.什么是接口?
为什么要定义接口?
接口与类有何异同?
来源:
考试大的美女编辑们
9.一个类如何实现接口?
实现某接口的类是否一定要重载该接口中的所有抽象方法?
10.接口是否可以被继承?
阅读下面的代码,试写出SubInterface中的抽象方法。
interfaceSupInterface
{
publicabstractintsupMethod();
}
interfaceSubInterfaceextendsSupInterface
{
publicabstractstringsubMethod();
}
参考答案:
1.true
2.A
3.答:
子类重新定义父类中已经存在的方法,称为方法的覆盖。
注意:
方法覆盖与域的隐藏不同。
子类重新定义父类已有的域,并不能完全取代它从父类那里继承的同名的域,这个域仍然占用子类的内存空间,在某些情况下会被使用;而当子类重新定义父类的方法时,从父类那里继承来的方法将被新方法完全取代,不再在子类的内存空间中占一席之地。
与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。
4.答:
关键字this指代当前类的当前对象,关键字super指代当前类的直接父类对象。
考试大-全国最大教育类网站(www.Examda。
com)
5.答:
一个类中存在多个同名的方法,称为多态。
把抽象功能和目的相同,而具体实现因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦合和依赖。
6.答:
Java程序通过覆盖和重载两种方式来实现多态。
覆盖是子类重新定义父类中已有的方法,重载是在一个类内部定义与已存在的方法同名但是参数列表不同的方法。
7.答:
publicclassch5_e5_12
{
publicstaticvoidmain(Stringargs[])
{
ComplexNumbercNumber_1=
newComplexNumber(3,-5);
ComplexNumbercNumber_2=本文来源:
考试大网
newComplexNumber(2,2);
doubled=10.0;
System.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).toString());
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());
}
}
classComplexNumber
{
//域
privatedoublem_dRealPart;
privatedoublem_dImaginPart;
//构造方法
ComplexNumber()
{
m_dRealPart=0.0;
m_dImaginPart=0.0;
}
ComplexNumber(doubler,doublei)
{
m_dRealPart=r;
m_dImaginPart=i;
}
ComplexNumber(ComplexNumberc)
{
m_dRealPart=c.getRealPart();
m_dImaginPart=c.getImaginaryPart();
}
//get,set方法
doublegetRealPart()
{
returnm_dRealPart;
}
doublegetImaginaryPart()
{
returnm_dImaginPart;
}
voidsetRealPart(doubled)
{
m_dRealPart=d;
}
voidsetImaginaryPart(doubled)
{
m_dImaginPart=d;
}
//复数运算方法
ComplexNumbercomplexAdd(ComplexNumberc)
{
returnnewComplexNumber(
this.m_dRealPart+c.getRealPart(),
this.m_dImaginPart+c.getImaginaryPart());
}
ComplexNumbercomplexAdd(doublec)
{
returnnewComplexNumber(
this.m_dRealPart+c,this.m_dImaginPart);
}
ComplexNumbercomplexMinus(ComplexNumberc)
{
returnnewComplexNumber(
this.m_dRealPart-c.getRealPart(),
this.m_dImaginPart-c.getImaginaryPart());
}
ComplexNumbercomplexMinus(doublec)
{来源:
returnnewComplexNumber(
this.m_dRealPart-c,this.m_dImaginPart);
}
ComplexNumbercomplexMulti(ComplexNumberc)
{
returnnewComplexNumber(
this.m_dRealPart*c.getRealPart()
-this.m_dImaginPart*c.getImaginaryPart(),
this.m_dRealPart*c.getImaginaryPart()
+this.m_dImaginPart*c.getRealPart());
}
ComplexNumbercomplexMulti(doublec)
{
returnnewComplexNumber(
this.m_dRealPart*c,this.m_dImaginPart*c);
}
//toString()
publicStringtoString()
{
return"("+m_dRealPart+"+"
+m_dImaginPart+"i"+")";
}
}
8.答:
接口是用来实现类间多重继承功能的结构。
接口与类相似,但是接口中只能包括常量和抽象方法。
定义接口相当于定义了一组抽象的功能、属性集合,可以使了ava程序的类层次结构更加合理,并实现多重继承。
9.答:
使用关键字implements可以定义类实现某接口。
实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。
10.答:
接口可以被继承。
SubInterface中的抽象方法有:
publicabstractintsupMethod();和publicabstractstringsubMethod();两个。
自考Java语言程序设计
(一)第七章Java常用类库介绍课后习题
七、Java常用类库介绍
1.指出下列陈述是对还是错,并做出解释。
(1)当String对象用==比较时,如果String包括相同的值则结果为true。
(2)一个String类的对象在其创建后可被修改。
2.对于下列描述,各写出一条语句完成要求的任务
(1)比较s1中的串和s2中的串的内容的相等性;
(2)用+=向串s1附加串;
(3)判断s1中串的长度;来源:
考试大
3.说明capacity()与length()用法上的差异?
4.如果ch为StringBuffer对象,ch=“JavaApple”,下列结果为何?
(1)ch.insert(3,’p’)
(2)ch.append(“Basic”)
(3)ch.setlength(5)(4)ch.reverse()
5.Math类中提供用来常数π和e的静态属性分别是什么?
6.下面关于Vector类的说法正确的是()
(1)类Vector在java.util包中。
(2)一个向量(Vector)对象存放的是一组有序的对象。
(3)一个向量(Vector)对象大小可以根据存放的元素个数的增加而自动增加。
(4)一个向量(Vector)对象中每个元素可以是不同类型的对象。
7.有三个字符串,编写程序找出其中最大者。
8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。
9.设定5个字符串,要求只打印那些以字母“b”开头的串,编写程序完成。
10.设定一个有大小写字母的字符串和一个查找字符,使用类String方法IndexOf()来判断在该字符串中该字符出现的次数。
参考答案
1.答:
(1)错。
用==操作符比较String对象实际上是判断它们在内存中是否为同一对象,并不是判断它们的值是否相同。
(2)错。
String类的对象是常量。
它们被创建后不可被修改。
2.答:
(1)s1.equals(s1,s2);
(2)s1+=s2;
(3)s1.length();
3.答:
capacity()返回字符串对象的当前缓冲区的长度,length()返回字符串对象字符的长度。
考试大收集整理
4.答:
(1)结果:
JavpaApplet
(2)结果:
JavpaAppletBasic
(3)结果:
ch长度变为5
(4)结果:
apvaJ
5.答:
PI、E
6.答:
(3)
7.
publicclassmax1
{
publicstaticvoidmain(Stringargs[])
{
Strings1="HelloJava";
Strings2="JavaApplet";
Strings3="Java";
Strings;
if(pareTo(s2)<0)
s=s2;
elses=s1;
if(pareTo(s3)<0)
s=s3;
Systrm.out.println("big="+s);
}
}
8.
publicclassout
{
publicstaticvoidmain(Stringargs[])
{
Strings1="HelloJava";
StringBufferbufup=newStringBuffer();
StringBufferbuflow=newStringBuffer();
for(intI=0;I
{if(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);
}
}
9.
publicclassprin_b
{publicstaticvoidmain(Stringargs[])
{
Strings1="hello";
Strings2="bee";
Strings3="java";
Strings4="brove";
Strings5="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.println(s5);
}
}
10.
publicclassppp
{
publicstaticvoidmain(Stringargs[])
{
Strings1="abcdefghi";
intnum=0;
for(inti=0;i
{i=s1.indexof('e',i);
num++;
}
System.out.print("s1="+s1+"e=");
if(num==0)
System.out.println("nofound");
elseSystem.out.println(num);
}
}
自考Java语言程序设计
(一)第八章Java异常处理及输入输出流简介课后习题
八、Java异常处理及输入输出流简介
1.列出5个常见的异常。
2.写出Java语言的异常处理机制的优点。
3.为什么异常处理技术不应该用于常规的程序控制?
4.引起异常产生的条件是什么?
5.异常没有被捕获将会发生什么?
6.编写一个程序,以说明catch(Exceptione)如何捕获各种异常。
7.下面的代码段中finally语句块会被执行吗?
publicclassExceptionExam3
{
publicstaticvoidmain(String[]args)
{
try
{
int[]a=newint[3];
System.exit(0);
}
catch(ArrayIndexOutOfBoundsExceptione)
{System.out.p