实用教程习题集 第4章.docx
- 文档编号:6313747
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:26
- 大小:27.51KB
实用教程习题集 第4章.docx
《实用教程习题集 第4章.docx》由会员分享,可在线阅读,更多相关《实用教程习题集 第4章.docx(26页珍藏版)》请在冰豆网上搜索。
实用教程习题集第4章
第4章类的封装性、继承性、多态性及接口
1、判断题
1.如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。
()
2.接口中的成员变量全部为常量,方法为抽象方法。
()
3.抽象类可以有构造方法,所以能直接用来生成实例。
()
4.Java的类不允许嵌套定义。
()
5.包含抽象方法的类一定是抽象类,但有abstract修饰的类不一定包含抽象方法()
6.泛型只能用于类的定义中,不能用于接口的定义中。
()
7.用final修饰的类不能被继承。
()
8.接口无构造器,不能有实例,也不能定义常量。
()
9.一个具体类实现接口时,必须要实现接口中的所有方法。
()
10.类具有封装性,但可以通过类的公共接口访问类中的数据。
()
11.子类能继承或覆盖(重写)父类的方法,但不能重载父类的方法。
()
12.用final修饰的方法不能被子类覆盖(重写)。
()
13.abstract是抽象修饰符,可以用来修饰类、属性和方法。
()
14.父类的静态方法不能被子类覆盖为非静态的方法,反之亦然。
()
15.子类实例化时,子类的构造方法一定会先调用父类的构造方法。
()
16.用final修饰的方法不能被覆盖(重写),也不能有重载的方法。
()
17.接口也可以继承接口,且可以继承多个接口,体现了多重继承性。
()
18.假设类B继承类A,类C继承类B,则在类C中可用super访问类A的方法。
()
19.类和接口都可以继承另外一个类。
()
20.抽象类中不能包含final修饰的方法。
()
二、选择题
1.Java实现动态多态性是通过()实现的。
A.重载B.覆盖C.接口D.抽象类
2.下列哪一种描述是正确的?
()
A.动态多态性只针对静态成员方法
B.动态多态性只针对非静态成员方法
C.动态多态性只针对静态成员域
D.动态多态性只针对非静态成员域
3.下列关于重载方法哪一个是正确的描述?
()
A.重载方法的参数形式(类型、参数个数或参数顺序)必须不同
B.重载方法的参数名称必须不同
C.重载方法的返回值类型必须不同
D.重载方法的修饰词必须不同
4.接口的所有成员方法都具有()修饰的特性。
A.private,finalB.public,abstract
C.static,protectedD.static
5.Java的封装性是通过()实现的。
A.访问权限控制B.设计内部类
C.静态域和静态方法D.包
6.下列说法哪个是正确的?
()
A.子类不能定义和父类同名同参数的方法
B.子类只能继承父类的方法,而不能重载
C.重载就是一个类中有多个同名但有不同形参(类型、参数个数或参数顺序)和方法体的方法
D.子类只能覆盖父类的方法,而不能重载
7.对于下列代码:
publicclassParent{
publicintaddValue(inta,intb){
ints;
s=a+b;
returns;
}
}
classChildextendsParent{}
下列哪个方法不可以加入类Child?
()
A.publicintaddValue(inta,intb,intc){returna+b+c;}
B.intaddValue(inta,intb){returna+b;}
C.publicintaddValue(inta){returna+1;}
D.publicintaddValue(inta,intb){returna+b+1;}
8.对于下列代码:
1.classPerson{
2.publicvoidprintValue(inti,intj){//....}
3.publicvoidprintValue(inti){//....}
4.}
5.publicclassTeacherextendsPerson{
6.publicvoidprintValue(){//...}
7.publicvoidprintValue(inti){//....}
8.publicstaticvoidmain(Stringargs[]){
9.Pesont=newTeacher();
10.t.printValue(10);
11.}
12.}
第10行语句将调用哪行语句?
()
A.第2行B.第3行C.第6行D.第7行
9.以下程序段输出结果的是()。
publicclassAimplementsB{
publicstaticvoidmain(Stringargs[]){
int=i;
Ac1=newA();
i=c1.k;
System.out.println(“i=”+i);
}
}
interfaceB{
intk=10;
}
A.i=0B.i=10C.程序有编译错误D.i=true
10.阅读下面的程序,输出结果是()?
publicclassTestDemo{
intm=5;
publicvoidsome(intx){
m=x;
}
publicstaticvoidmain(Stringargs[]){
newDemo().some(7);
}
}
classDemoextendsTestDemo{
intm=8;
publicvoidsome(intx){
super.some(x);
System.out.println(m);
}
}
A.5B.8C.7D.编译错误
11.下述哪个方法不可以加入类Subclass?
()
classSupClass{
publicvoidmethodOne(inti){}
publicvoidmethodTwo(inti){}
publicstaticvoidmethodThree(inti){}
publicstaticvoidmethodForth(inti){}
}
classSubClassextendssupClass{
.....
}
A.publicstaticvoidmethodOne(inti){}
B.publicvoidmethodTwo(inti){}
C.publicstaticvoidmethodThree(inti,intj){}
D.publicstaticvoidmethodForth(inti){}
12.关于下面的程序,说法正确的是()。
classBase{
intm;
publicBase(intm){
this.m=m+1;
}
}
publicclassTestextendsBase{
publicTest(){
m=m+1;
}
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
System.out.print(t.m);
A.输出结果为0B.输出结果为1
C.输出结果为2D.编译出错
13.关于下面的程序,编译和运行后输出结果是()
classBase{
intm=0;
publicintgetM(){
returnm;
}
}
publicclassTestextendsBase{
intm=1;
publicintgetM(){
returnm;
}
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
System.out.print(t.m);
System.out.print(t.getM());
}
}
A.00B.01C.10D.11
14.设有下面的两个类定义:
classA{
voidShow(){
System.out.println(“我喜欢Java!
”);
}
}
classBextendsA{
voidShow(){
System.out.println(“我喜欢C++!
”);
}
}
则顺序执行如下语句后输出结果为()。
Aa=newA();
Bb=newB();
a.show();
b.show();
A.我喜欢Java!
B.我喜欢C++!
我喜欢C++!
我喜欢Java!
C.我喜欢Java!
D.我喜欢C++!
我喜欢Java!
我喜欢C++!
15.现有两个类A和B,以下描述中表示B继承A的是()。
A.classAextendsBB.classBimplementsA
C.classAimplementsD.classBextendsA
16.定义类B和类C如下,并将其保存为B.java文件,得到的结果是()。
classB{
intb;
B(inti){
b=i;
}
}
classCextendsB{
doublec=7.8;
}
A.代码能够成功编译运行
B.代码无法编译因为类B不是一个应用程序或小程序
C.代码无法编译,因为类C没有定义一个带参数的构造方法
D.代码无法编译,因为类B没有定义一个不带参数的构造方法
17.类Teacher和Student都是类Person的子类,t、s、p分别是上述三个类的非空引用变量,关于以下语句说法正确的()。
if(tinstanceofPerson){
s=(Student)t;
}
A.将构造一个Student对象B.表达式合法
C.编译时非法D.编译时合法而在运行时可能非法
18.在//pointx处的哪个声明是合法的?
()
classPerson{
privaateinta;
publicintchange(intm){
returnm;
}
}
publicclassTeacherextendsPerson{
publicintb;
publicstaticvoidmain(Stringargs[]){
Personp=newPerson();
Teachert=newTeacher();
inti;
//pointx
}
}
A.i=m;B.i=b;C.i=p.aD.i=p.change(30);
19.下面关于继承的叙述哪些是正确的?
()
A.在Java中的类只允许继承一个类
B.在Java中一个类允许继承多个类
C.在Java中一个类不能同时继承一个类和实现一个接口
D.在Java中接口可以继承一个或多个接口
20.下列哪些方法与方法publicvoidadd(inta){}构成重载方法?
()
A.publicintadd(inta)B.publiclongadd(longa)
C.publicvoidadd(inta,intb)D.publicvoidadd(floata)
21.在Java语言中,类Cat是类Animal的子类,Cat的构造方法中有一句super(),该语句表达了什么含义?
()
A.调用类Cat中定义的super()方法
B.调用类Animal中定义的super()方法
C.调用类Animal的构造方法
D.语法错误
22.定义一个类名为Myclass.java的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为()。
A.privateclassMyClassextendsObject
B.classMyclassextendsObject
C.publicclassMyClassextendsObject
D.ProtectedclassMyClassextendsObject
23.关于下面的程序,以下哪个结论是正确的?
()
1.publicclassTest{
2.publicTest(){
3.System.out.print(“3”);
4.}
5.publicvoidTest(){
6.System.out.print(“2”);
7.}
8.publicstaticvoidmain(Stringargs[]){
9.Testt=newTest();
10.t.Test();
11.System.out.print(“1”);
12.}
13.}
A.程序可以通过编译并正常运行,输出结果为21
B.程序可以通过编译并正常运行,输出结果为31
C.程序可以通过编译并正常运行,输出结果为321
D.程序无法通过编译
24.给定如下Java程序:
classA{
publicA(){
System.out.print(“A”);
}
}
classBextendsA{
publicB(){
System.out.print(“B”)
}
publicstaticvoidmain(String[]args){
Bb=newB();
}
}
上述程序将()。
A.不能通过编译
B.通过编译,执行后输出为AB
C.通过编译,执行后输出为B
D.通过编译,执行后输出为A
25.已知MyInterface是一个接口,ClassA是实现了MyInterface的一个类,ClassB是ClassA的子类,则下列哪个语句是正确的?
()
A.ClassBobj=newClassA();
B.Myinterfaceobj=newClassB();
C.ClassAobj=newMyInterface();
D.MyInterfaceobj=newMyInterface();
26.A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:
Aa0=newA();
Aa1=newB();
Aa2=newC();
以下哪个说法是正确的?
()
A.只有第1行能通过编译
B.第1行和第2行能通过编译,但第3行编译出错
C.第1~3行能通过编译,但第2行和第3行运行时出错
D.第1行、第2行和第3行的声明都是正确
27.考虑以下代码:
classC1{}
interfaceC2{}
classC3extendsC1implementsC2{}
classC4
则下列哪个语句是正确的?
()
A.C4
B.C4
C.C4
D.C4
28.对于以下类:
classA{}
classBextendsA{}
classCextendsA{}
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Ax=newA();
By=newB();
Cz=newC();
//此处插入一条语句
}
}
下面哪个语句可以放到插入行?
()
A.x=y;B.z=x;
C.z=(c)y;D.y=(a)y;
29.设有一个类的代码如下:
classOuter{
publicclassInner1{}
publicstaticclassInner2{}
}
则在另一个类的代码中,下列哪个语句是正确的?
()
A.Outer.Inner1obj=newOuter.Inner1();
B.Outer.Inner2obj=newOuter.Inner2();
C.Outer.Inner1obj=newOuter.Inner1().newInner1();
D.Outer.Inner2obj=newOuter().newInner2();
30.以下关于泛型的说法哪个是错误的?
()
A.泛型是通过类型参数来提高代码复用性的一种技术
B.通过在类名后增加类型参数可以定义具有泛型特点的类
C.通过在接口名后增加类型参数可以定义具有泛型特点的接口
D.一个泛型类只能有一个类型参数
2、程序阅读题
1.仔细阅读下面的程序代码,若经编译和运行后,请写出打印结果。
classOverload{
voidtestOverload(inti){
System.out.println(“int”);
}
voidtestOverload(Strings){
System.out.println(“String”);
}
publicstaticvoidmain(Stringargs[]){
Overloada=newOverload();
charch=’x’;
a.testOverload(ch);
}
}
2.仔细阅读下面的程序代码,请将划线上
(1)~(5)的语句补充完整。
abstractclassPerson{
privateStringname;
publicPerson(Stringn){
name=n;
}
public
(1)StringgetMajor();
publicString
(2)(){
returnname;
}
}
classStudent(3)Person{
private(4);
publicStudent(Stringn,Stringm){
super(n);
major=m;
}
publicString(5)(){
return”专业是:
”+major;
}
}
publicclassTestPerson{
publicstaticvoidmain(Stringargs[]){
Personp=newStudent(“张三”,”软件工程”);
System.out.println(p.getName()+”,”+p.getMajor());
}
}
3.写出下列程序代码的运行结果。
publicclassTest{
intm=1;
publicvoidsome(intx){
m=x;
}
publicstaticvoidmain(Stringargs[]){
newDemo().some
(2);
}
}
classDemoextendsTest{
intm=3;
publicvoidsome(intx){
super.some(x);
System.out.print(m);
System.out.print(super.m);
}
}
4.写出下列程序代码的运行结果。
classA{
intm=0,n=0;
longf(){
returnm+n;
}
}
classBextendsA{
intm=1,n=1;
longf(){
longresult=0;
super.m=10;
super.n=30;
result=super.f()+(m+n);
returnresult;
}
longg(){
longresult=0;
result=super.f();
returnresult/2;
}
}
classExample{
publicstaticvoidmain(Stringargs[]){
Bb=newB();
b.m=6;
b.n=2;
longresultOne=b.g();
longresultTwo=b.f();
longresultThree=b.g();
System.out.println(“resultOne=”+resultOne);
System.out.println(“resultTwo=”+resultTwo);
System.out.println(“resultThree=”+resultThree);
}
}
5.下面的程序运行结果是什么?
classTree(){
classPineextendsTree()
classOakextendsTree()
publicclassForest{
publicstaticvoidmain(String[]args){
Treetree=newPine();
if(treeinstanceofPine)
System.out.println("Pine");
if(treeinstanceofTree)
System.out.println("Tree");
if(treeinstanceofOak)
System.out.println("Oak");
else
System.out.println("Oops");
}
}
6.下面的程序运行结果是什么?
abstractclassBase{
abstractpublicvoidmyfunc();
publicvoidanother(){
System.out.println("Anothermethod");
}
}
publicclassAbsextendsBase{
publicstaticvoidmain(Stringargs[]){
Baseb=newAbs();
b.another();
}
publicvoidmyfunc(){
System.out.println("MyFunc");
}
publicvoi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实用教程习题集 第4章 实用教程 习题集
![提示](https://static.bdocx.com/images/bang_tan.gif)