面向对象试题答案.docx
《面向对象试题答案.docx》由会员分享,可在线阅读,更多相关《面向对象试题答案.docx(8页珍藏版)》请在冰豆网上搜索。
面向对象试题答案
面向对象试题(答案)
CoreJavaOOP考试题
考试时间:
90分钟
考试总分:
100分
一、选择题(不定项选择)(22*4=88)
1.
类A,B的定义如下:
classA{
privateinta=100;
A(){
System.out.print("A()");
System.out.println(a);
}
}
classBextendsA{
privateinta=200;
B(){
System.out.print("B()");
System.out.println(a);
}
}
运行下面的代码:
newB();
输出的结果是:
(A)。
A.
A()100
B()200
B.
A()200
B()200
C.
B()200
A()100
D.
B()200
A()200
2.下列说法正确的是(D)
A.所有类都必须定义构造方法(构造器)
B.构造方法必须初始化类的所有数据成员
C.子类定义了构造器后,不再调用父类的构造器
D.构造方法可以访问类的非静态成员
3.在Java中,哪个关键字使类不能派生子类?
(A)
A:
final
B:
public
C:
private
D:
native
4.classBase{
staticvoidtest(){
System.out.println(“Base.test()”);
}
}
publicclassChildextendsBase{
staticvoidtest(){
System.out.println(“Child.test()”);
}
publicstaticvoidmain(String[]args){
Basebase=newChild();
Childchild=newChild();
base.test();
child.test();
}
}
程序运行的结果是(C)
A.Child.test()Child.test()
B.Child.test()Base.test()
C.Base.test()Child.test()
D.Base.test()Base.test()
5.下列哪些叙述是正确的(CD)
A.在一个类中,方法不能与类名相同
B.abstract可以修饰属性、方法和类
C.实例方法可直接调用本类的static方法和非static方法
D.static方法不能调用非static方法
6.以下说法正确的是(ABC)
A.子类不能继承父类的构造方法
B.子类的构造方法可以访问父类的构造方法
C.子类不可直接访问父类的私有属性
D.子类可以重写父类的所有方法
7.分析选项中关于Java中this关键字的说法正确的是(A)
A.this关键字是在对象内部指代自身的引用
B.this关键字可以在类中的任何位置使用
C.this关键字和类关联,而不是和特定的对象关联
D.同一个类的不同对象共用一个this
8下列关于继承的说法哪个是正确的?
(B)
A.子类只继承父类public方法和属性
B.子类继承父类的非私有属性和方法
C.子类只继承父类的方法,而不继承父类的属性
D.子类将继承父类的所有属性和方法
9.在Java中,关于final关键字的说法正确的是(AC)
A.final修饰的变量,一旦赋值就不能被更改
B.final修饰的类只能被一个子类继承
C.final修饰的方法,不能在子类中被覆盖
D.final修饰的方法,不能被子类继承
10.Strings=newString(“xyz”)创建了几个对象(C);
A.0
B.1
C.2
D.3
11.下列语句的序列执行后,k的值是(B)
intm=3,n=6,k=0;
While((m++)<(--n))++k;
A.0B.1C.2D.3
12.下列哪一项不是面向对象的典型特征(D)
A.封装B.继承
C.多态D.抽象
13.(多选)在java中,关于构造方法,下列说法正确的是(ABD)
A.构造方法的名称必须与类名相同
B.构造方法可以带参数
C.构造方法不可以重载
D.构造方法绝对不能有返回值
14.下面关于变量的说法正确的是(BC)
A.实例变量可以通过类名直接调用
B.类变量可以通过类名直接调用
C.Java中的参数传递都是值传递
D.在不同的作用域不能定义相同的变量
15.下列代码有编译错误的是第(C)行
1)publicclassTest{
2)publicstaticvoidmain(String[]args){
3)int[]arr1=newint[12];
4)char[]arr2=newchar[];
5)int[]arr3={};
6)Object[]obj=newObject[4];
7)Objectobj1=newobject[9];
8)}
9)}
A.5)
B.5)7)
C.4)7)
D.4)
16.下列代码的运行结果是(A)
publicclassTest{
privateintnum;
privatestaticTesttest;
publicTest(intnum){
this.num=++num;
}
static{
intnum=16;
test=newTest(num);
++test.num;
}
publicstaticvoidmain(String[]args){
test=newTest(13);
System.out.println(test.num);
}
}
A.14
B.15
C.16
D.17
17.仔细分析下列代码,请指出错误的行(D)。
publicclassSomeThing{
privateStringstr;
publicintaddOne(finalintx){
return++x;
}
}
A.
publicclassSomeThing
B.
privateStringstr;
C.
publicintaddOne(finalintx)
D.
return++x;
18.Java中访问控制符说法错误的是?
(BC)
A:
protected声明的,在同一package中其他类可以访问。
B:
friendly声明,继承类中不可以访问。
C:
Java中未声明控制符的,默认为public。
D:
public声明的,非同一个package也能访问。
19.查看如下代码:
publicclassFoo{
publicvoidmethod(Stringstr,intage){}
}
下列选项中,和Foo类中method方法重载的方法是(BCD)。
A.publicintmethod(Stringstr,intage){}
B.publicvoidmethod(intyear,Strings){}
C.publicintmethod(intyear,Strings){}
D.publicintmethod(Stringstr){}
20.下列语句创建对象的总个数是:
(A)。
Strings=“a”+”b”+”c”;
A.1
B.2
C.3
D.4
21.Question(D)publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr="420";
str+=42;
System.out.println(str);
}}
Whatistheoutput?
A.42B.420C.462D42042ECompliationfails.
FAnexceptionisthrownatruntime.
22.classCard{}下列不属于Card类构造方法是:
(C)
A.Card(){}
B.publicCard(){}
C.publicvoidCard(){}
D.privateCard(){}
二、简答题(2*6=12分)
1.Overload和Override有什么区别?
重写:
发生在父子类中,方法名称相同,参数列表相同,方法体不同
遵循"运行期绑定",看对象的类型来调用方法.
重载:
发生在一个类中,方法名称相同,参数列表不同,方法体不同
遵循"编译期绑定",看参数引用的类型来绑定调用方法.
2.final的特性?
final:
最终的
1)修饰变量:
变量不能被改变
2)修饰方法:
方法不能被重写
3)修饰类:
类不能被继承
三、附加题编程题(选做)
(1)定义一个ManKind类,包括
成员变量intsex和intsalary;
方法voidmanOrWorman():
根据sex的值显示“man”(sex==1)或者“women”(sex==0);
方法voidemployeed():
根据salary的值显示“nojob”(salary==0)或者“job”(salary!
=0)。
(2)定义类Kids1继承ManKind,并包括
成员变量intyearsOld;
方法printAge()打印yearsOld的值。
(3)在Kids1类的main方法中实例化Kids1的对象someKid,用该对象访问其父类的成员变量及方法。