java面向对象考题和答案.docx
《java面向对象考题和答案.docx》由会员分享,可在线阅读,更多相关《java面向对象考题和答案.docx(20页珍藏版)》请在冰豆网上搜索。
java面向对象考题和答案
java面向对象考题和答案
1.下面代码的输出结果是:
2.publicclassMain{
3.publicstaticvoidmain(String[]args){
4.intn=100;
5.intm=200;
6.
7.
8.}
9.publicstaticintf(intm,intn){
10.n=m+n;
11.returnn;
12.}
13.}
300
100
100
300
2.程序执行的结果是:
3.publicclassTest{
4.publicstaticvoidmain(String[]args){
5.intx=6;
6.Testp=newTest();
7.(x);
8."main:
x="+x);
9.}
10.voiddoStuff(intx){
11."doStuff:
x="+x++);
12.}
13.}
A.doStuff:
x=7
B.main:
x=7
:
x=7
main:
x=6
:
x=6
main:
x=7
:
x=6
main:
x=6
3.下列关于JVM的内存结构描述正确的是:
A.类的各种信息在方法区中保存
B.堆用于存放程序运行过程当中所有的局部变量
C.栈用于存储使用new关键字创建的对象
D.数组属于JVM的内存结构
4.下列代码的输出结果是:
5.publicclassTest{
6.publicvoidprint(charc){
7."c");
8.}
9.
10.publicvoidprint(inti){
11."i");
12.}
13.
14.publicvoidprint(doubled){
15."d");
16.}
17.publicvoidprint(Strings){
18."s");
19.}
20.publicstaticvoidmain(String[]args){
21.Testtest=newTest();
22.('5');
23.}
24.}
5.程序执行的结果是:
6.publicclassTest{
7.Stringname="Tom";
8.publicTest(Stringname){
9.name=name;
10.}
11.publicstaticvoidmain(String[]args){
12.Testt=newTest("Jack");
13.
14.}
15.}
D.""
6.关于构造方法,下列说法错误的是:
A.构造方法不可以进行方法重写
B.构造方法用来实例化一个新的对象
C.构造方法具有和类名相同的名称
D.构造方法不返回任何数据类型
7.关于Java中继承的特点,下列说法正确的是:
A.使类的定义复杂化
只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的
C.子类继承父类的所有成员变量和方法,包括父类的构造方法
D.不可以多层继承,即一个类不可以继承另一个类的子类
8.下列代码运行的结果是:
classFoo{
publicinta;
publicFoo(){
a=3;
}
publicvoidaddFive(){
a+=5;
}
}
classBarextendsFoo{
publicinta;
publicBar(){
a=8;
}
publicvoidaddFive(){
+=5;
}
}
publicclassTestFoo{
publicstaticvoidmain(String[]args){
Foofoo=newBar();
();
"Value:
"+;
}
}
:
3
:
8
:
13
:
18
9.下列代码编译和运行的结果是:
10.classPerson{
11.Stringname="Noname";
12.
13.publicPerson(Stringnm){
14.name=nm;
15.}
16.}
17.classEmployeeextendsPerson{
18.StringempID="0000";
19.
20.publicEmployee(Stringid){
21.empID=id;
22.}
23.}
24.publicclassEmployeeTest{
25.publicstaticvoidmain(String[]args){
26.Employeee=newEmployee("4321");
27.
28.}
29.}
A.输出:
0000
B.输出:
4321
C.代码publicEmployee(Stringid){行,出现编译错误
D.抛出运行时异常
10.下列代码的运行结果是:
11.publicclassAnimal{
12.publicStringnoise(){
13.return"peep";
14.}
15.publicstaticvoidmain(String[]args){
16.Animalanimal=newDog();
17.Catcat=(Cat)animal;
18.
19.}
20.}
21.classDogextendsAnimal{
22.publicStringnoise(){
23.return"bark";
24.}
25.}
26.classCatextendsAnimal{
27.publicStringnoise(){
28.
return"meow";
}
}
A.peep
D.抛出运行时异常
11.下列代码编译和运行的结果是:
publicclassA{
publicvoidstart(){
"TestA");
}
}
publicclassBextendsA{
publicvoidstart(){
"TestB");
}
publicstaticvoidmain(String[]args){
((A)newB()).start();
}
}
A.输出:
TestA
B.输出:
TestB
C.输出:
TestATestB
D.编译错误
12.请看下列代码:
classOne{
voidfoo(){
}
}
classTwoextendsOne{
protectedvoidfoo(){/*morecodehere*/}
C.publicvoidfoo(){/*morecodehere*/}
D.privatevoidfoo(){/*morecodehere*/}
13.下列选项中,不属于Java的访问修饰符的是:
14.下列代码的输出结果是:
15.classFoo{
16.privateintx;
17.publicFoo(intx){
18.=x;
19.}
20.publicvoidsetX(intx){
21.=x;
22.}
23.publicintgetX(){
24.returnx;
25.}
26.}
27.publicclassGamma{
28.staticFoofooBar(Foofoo){
29.foo=newFoo(100);
30.returnfoo;
31.}
32.publicstaticvoidmain(String[]args){
33.Foofoo=newFoo(300);
34.+"-");
35.FoofooFoo=fooBar(foo);
36.+"-");
37.+"-");
38.foo=fooBar(fooFoo);
39.+"-");
40.
41.}
42.}
15.下列代码运行的结果是:
16.publicclassBase{
17.publicstaticfinalStringFOO="foo";
18.classSubextendsBase{
19.publicstaticfinalStringFOO="bar";
20.}
21.publicstaticvoidmain(String[]args){
22.Baseb=newBase();
23.Subs=newSub();
24.
25.
26.
27.
28.s).FOO);
29.}
30.}
31.
A.foofoofoofoofoo
16.关于下列代码说法正确的是:
17.publicclassItemTest{
18.privatefinalintid;
19.publicItemTest(intid){
20.=id;
21.}
22.publicvoidupdateId(intnewId){
23.id=newId;
24.}
25.publicstaticvoidmain(String[]args){
26.ItemTestfa=newItemTest(42);
27.(69);
28.
29.}
30.}
A.编译错误
B.运行时抛出异常
C.运行后,fa对象属性id的值没有改变,应然是42
D.运行后,fa对象属性id的值改变成新的值69
17.请看下列代码编译和运行的结果是:
18.publicclassStudent{
privateStringname="sun";
publicstaticvoidmain(String[]args){
Student[]students=newStudent[2];
}
}
A.sun2
2
1
D.运行时抛出NullPointerException异常
18.下列代码的输出结果是:
19.abstractclassVehicle{
20.publicintspeed(){
21.return0;
22.}
23.}
24.classCarextendsVehicle{
25.publicintspeed(){
26.return60;
27.}
28.}
29.classRaceCarextendsCar{
30.publicintspeed(){
31.return150;
32.}
33.}
34.publicclassTestCar{
35.publicstaticvoidmain(String[]args){
36.RaceCarracer=newRaceCar();
37.Carcar=newRaceCar();
38.Vehiclevehicle=newRaceCar();
39.+","+()+","
40.+());
41.}
42.}
0,0,60,0
150,150D.抛出运行时异常
19.请看下列代码:
publicabstractclassEmployee{
protectedabstractdoublegetSalesAmount();
publicdoublegetCommision(){
returngetSalesAmount()*;estA(){
}
}
classSalesextendsEmployee{
<插入代码>
}
在<插入代码>处填入的方法正确的是:
getSalesAmount(){return;}
doublegetSalesAmount(){return;}
doublegetSalesAmount(){return;}
doublegetSalesAmount(){return;}
20.关于下列代码说法正确的是:
publicinterfaceA{
publicvoiddoSomething(Stringthing);
}
publicclassAImplimplementsA{
publicvoiddoSomething(Stringmsg){
}
}
publicclassB{
publicAdoit(){
returnnull;
}
publicStringexecute(){
returnnull;
}
}
publicclassCextendsB{
publicAImpldoit(){
returnnull;
}
publicObjectexecute(){
returnnull;
}
}
A.所有类和接口都编译成功B.类B编译失败
C.类Aimpl编译失败D.类C编译失败
21.关于下列代码说法正确的是:
interfaceA{
publicvoidaMethod();
}
interfaceB{
publicvoidbMethod();
}
interfaceCextendsA,B{
publicvoidcMethod();
}
classDimplementsB{
publicvoidbMethod(){}
}
classEextendsDimplementsC{
publicvoidaMethod(){}
publicvoidbMethod(){}
publicvoidcMethod(){}
}
A.编译失败
B.如果定义De=newE();,那么();调用D类的bMethod()方法
C.如果定义De=(D)(newE());,那么();调用D类的bMethod()方法
D.如果定义De=(D)(newE());,那么();调用E类的bMethod()方法
22.请看下列代码:
publicclassUserRequest{
publicvoidrequest(ServletActionaction){
();
}
publicstaticvoidmain(String[]args){
UserRequestuser=newUserRequest();
(newServletAction(){
publicvoiddoService(){
"处理请求");
}
});
}
}
如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:
A.publicstaticclassServletAction{
publicvoiddoService();
}
finalclassServletAction{
publicvoiddoService();
}
classServletAction{
publicvoiddoService();
}
D.publicinterfaceServletAction{
publicvoiddoService();
}
23.下列代码运行的结果是:
24.publicclassHello{
25.Stringtitle;
26.intvalue;
27.publicHello(){
28.title+="World";
29.}
30.publicHello(intvalue){
31.=value;
32.title="Hello";
33.}
34.publicstaticvoidmain(String[]args){
35.Helloc=newHello(5);
36.
37.}
38.}
A.Hello
B.HelloWorld
C.HelloWorld5
D.运行后无输出
24.请看下列代码编译和运行的结果是:
25.interfaceTestA{
26.StringtoString();
27.}
28.publicclassTest{
29.publicstaticvoidmain(String[]args){
30.TestA(){
31.publicStringtoString(){
32.return"test";
33.
}
});
}
}
A.输出:
test
B.输出:
null
C.代码TestA(){行,编译出错
D.代码publicStringtoString(){行,编译出错
25.请看下列代码:
1)publicclassOuter{
2)voidfn(inti){
3)classInner{
4)voidprint(){
5)
6)}
7)}
8)Innerin=newInner();
9)();
10)}
11)}
12)classTest{
13)publicstaticvoidmain(Stringargs[]){
14)Outerout=newOuter();
15)(100);
16)}
17)}
关于上述代码说法正确的是:
A.在第5行出现编译错误,fn方法的参数必须用final修饰
B.在第3行出现编译错误,在方法的内部不能写类
C.在第8行出现编译错误,在方法的内部不能实例化Inner类的对象
D.运行代码,控制台输出100
A1,正确答案:
C
2,正确答案:
D
3,正确答案:
A
4,正确答案:
A
5,正确答案:
B
6,正确答案:
B
7,正确答案:
B
8,正确答案:
A
9,正确答案:
C
10,正确答案:
D
11,正确答案:
B
12,正确答案:
BC
13,正确答案:
C
14,正确答案:
B
15,正确答案:
D
16,正确答案:
A
17,正确答案:
D
18,正确答案:
C
19,正确答案:
BD
20,正确答案:
D
21,正确答案:
D
22,正确答案:
D
23,正确答案:
A
24,正确答案:
A
25,正确答案:
A