java面向对象考题和答案.docx
《java面向对象考题和答案.docx》由会员分享,可在线阅读,更多相关《java面向对象考题和答案.docx(20页珍藏版)》请在冰豆网上搜索。
java面向对象考题和答案
1.下面代码的输出结果是:
2.publicclassMain{
3.publicstaticvoidmain(String[]args){
4.intn=100;
5.intm=200;
6.System.out.println(f(n,m));
7.System.out.println(n);
8.}
9.publicstaticintf(intm,intn){
10.n=m+n;
11.returnn;
12.}
13.}
A.300
300
B.100
100
C.300
100
D.100
300
2.程序执行的结果是:
3.publicclassTest{
4.publicstaticvoidmain(String[]args){
5.intx=6;
6.Testp=newTest();
7.p.doStuff(x);
8.System.out.println("main:
x="+x);
9.}
10.voiddoStuff(intx){
11.System.out.println("doStuff:
x="+x++);
12.}
13.}
A.doStuff:
x=7
B.main:
x=7
B.doStuff:
x=7
main:
x=6
C.doStuff:
x=6
main:
x=7
D.doStuff:
x=6
main:
x=6
3.下列关于JVM的内存结构描述正确的是:
A.类的各种信息在方法区中保存
B.堆用于存放程序运行过程当中所有的局部变量
C.栈用于存储使用new关键字创建的对象
D.数组属于JVM的内存结构
4.下列代码的输出结果是:
5.publicclassTest{
6.publicvoidprint(charc){
7.System.out.println("c");
8.}
9.
10.publicvoidprint(inti){
11.System.out.println("i");
12.}
13.
14.publicvoidprint(doubled){
15.System.out.println("d");
16.}
17.publicvoidprint(Strings){
18.System.out.println("s");
19.}
20.publicstaticvoidmain(String[]args){
21.Testtest=newTest();
22.test.print('5');
23.}
24.}
A.c
B.i
C.d
D.s
5.程序执行的结果是:
6.publicclassTest{
7.Stringname="Tom";
8.publicTest(Stringname){
9.name=name;
10.}
11.publicstaticvoidmain(String[]args){
12.Testt=newTest("Jack");
13.System.out.println(t.name);
14.}
15.}
A.nullB.Tom
C.JackD.""
6.关于构造方法,下列说法错误的是:
A.构造方法不可以进行方法重写
B.构造方法用来实例化一个新的对象
C.构造方法具有和类名相同的名称
D.构造方法不返回任何数据类型
7.关于Java中继承的特点,下列说法正确的是:
A.使类的定义复杂化
B.Java只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的
C.子类继承父类的所有成员变量和方法,包括父类的构造方法
D.不可以多层继承,即一个类不可以继承另一个类的子类
8.下列代码运行的结果是:
classFoo{
publicinta;
publicFoo(){
a=3;
}
publicvoidaddFive(){
a+=5;
}
}
classBarextendsFoo{
publicinta;
publicBar(){
a=8;
}
publicvoidaddFive(){
this.a+=5;
}
}
publicclassTestFoo{
publicstaticvoidmain(String[]args){
Foofoo=newBar();
foo.addFive();
System.out.println("Value:
"+foo.a);
}
}
A.Value:
3
B.Value:
8
C.Value:
13
D.Value:
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.System.out.println(e.empID);
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.System.out.println(cat.noise());
19.}
20.}
21.classDogextendsAnimal{
22.publicStringnoise(){
23.return"bark";
24.}
25.}
26.classCatextendsAnimal{
27.publicStringnoise(){
28.return"meow";
29.}
30.}
A.peep
B.bark
C.meow
D.抛出运行时异常
11.下列代码编译和运行的结果是:
publicclassA{
publicvoidstart(){
System.out.println("TestA");
}
}
publicclassBextendsA{
publicvoidstart(){
System.out.println("TestB");
}
publicstaticvoidmain(String[]args){
((A)newB()).start();
}
}
A.输出:
TestA
B.输出:
TestB
C.输出:
TestATestB
D.编译错误
12.请看下列代码:
classOne{
voidfoo(){
}
}
classTwoextendsOne{
//insertmethodhere
}
下列选项中的代码,放置在<插入代码>处无编译错误的是:
A.intfoo(){/*morecodehere*/}
B.protectedvoidfoo(){/*morecodehere*/}
C.publicvoidfoo(){/*morecodehere*/}
D.privatevoidfoo(){/*morecodehere*/}
13.下列选项中,不属于Java的访问修饰符的是:
A.private
B.protected
C.friendly
D.public
14.下列代码的输出结果是:
15.classFoo{
16.privateintx;
17.publicFoo(intx){
18.this.x=x;
19.}
20.publicvoidsetX(intx){
21.this.x=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.System.out.print(foo.getX()+"-");
35.FoofooFoo=fooBar(foo);
36.System.out.print(foo.getX()+"-");
37.System.out.print(fooFoo.getX()+"-");
38.foo=fooBar(fooFoo);
39.System.out.print(foo.getX()+"-");
40.System.out.print(fooFoo.getX());
41.}
42.}
A.300-100-100-100-100
B.300-300-100-100-100
C.300-300-300-100-100
D.300-300-300-300-100
15.下列代码运行的结果是:
16.publicclassBase{
17.publicstaticfinalStringFOO="foo";
18.classSubextendsBase{
19.publicstaticfinalStringFOO="bar";
20.}
21.publicstaticvoidmain(String[]args){
22.Baseb=newBase();
23.Subs=newSub();
24.System.out.print(Base.FOO);
25.System.out.print(Sub.FOO);
26.System.out.print(b.FOO);
27.System.out.print(s.FOO);
28.System.out.print(((Base)s).FOO);
29.}
30.}
31.
A.foofoofoofoofoo
B.foobarfoobarbar
C.foobarfoofoofoo
D.foobarfoobarfoo
16.关于下列代码说法正确的是:
17.publicclassItemTest{
18.privatefinalintid;
19.publicItemTest(intid){
20.this.id=id;
21.}
22.publicvoidupdateId(intnewId){
23.id=newId;
24.}
25.publicstaticvoidmain(String[]args){
26.ItemTestfa=newItemTest(42);
27.fa.updateId(69);
28.System.out.println(fa.id);
29.}
30.}
A.编译错误
B.运行时抛出异常
C.运行后,fa对象属性id的值没有改变,应然是42
D.运行后,fa对象属性id的值改变成新的值69
17.请看下列代码编译和运行的结果是:
18.publicclassStudent{
19.privateStringname="sun";
20.publicstaticvoidmain(String[]args){
21.Student[]students=newStudent[2];
22.System.out.println(students[0].name);
23.System.out.println(students.length);
24.}
25.}
A.sun2
B.null2
C.null1
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.System.out.println(racer.speed()+","+car.speed()+","
40.+vehicle.speed());
41.}
42.}
A.0,0,0B.150,60,0
C.150,150,150D.抛出运行时异常
19.请看下列代码:
publicabstractclassEmployee{
protectedabstractdoublegetSalesAmount();
publicdoublegetCommision(){
returngetSalesAmount()*0.15;estA(){
}
}
classSalesextendsEmployee{
<插入代码>
}
在<插入代码>处填入的方法正确的是:
A.doublegetSalesAmount(){return1230.45;}
B.publicdoublegetSalesAmount(){return1230.45;}
C.privatedoublegetSalesAmount(){return1230.45;}
D.protecteddoublegetSalesAmount(){return1230.45;}
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();,那么e.bMethod();调用D类的bMethod()方法
C.如果定义De=(D)(newE());,那么e.bMethod();调用D类的bMethod()方法
D.如果定义De=(D)(newE());,那么e.bMethod();调用E类的bMethod()方法
22.请看下列代码:
publicclassUserRequest{
publicvoidrequest(ServletActionaction){
action.doService();
}
publicstaticvoidmain(String[]args){
UserRequestuser=newUserRequest();
user.request(newServletAction(){
publicvoiddoService(){
System.out.println("处理请求");
}
});
}
}
如果上述代码采用回调模式编写,下列关于ServletAction的定义正确的是:
A.publicstaticclassServletAction{
publicvoiddoService();
}
B.publicfinalclassServletAction{
publicvoiddoService();
}
C.publicclassServletAction{
publicvoiddoService();
}
D.publicinterfaceServletAction{
publicvoiddoService();
}
23.下列代码运行的结果是:
24.publicclassHello{
25.Stringtitle;
26.intvalue;
27.publicHello(){
28.title+="World";
29.}
30.publicHello(intvalue){
31.this.value=value;
32.title="Hello";
33.}
34.publicstaticvoidmain(String[]args){
35.Helloc=newHello(5);
36.System.out.println(c.title);
37.}
38.}
A.Hello
B.HelloWorld
C.HelloWorld5
D.运行后无输出
24.请看下列代码编译和运行的结果是:
25.interfaceTestA{
26.StringtoString();
27.}
28.publicclassTest{
29.publicstaticvoidmain(String[]args){
30.System.out.println(newTestA(){
31.publicStringtoString(){
32.return"test";
33.}
34.});
35.}
36.}
A.输出:
test
B.输出:
null
C.代码System.out.println(newTestA(){行,编译出错
D.代码publicStringtoString(){行,编译出错
25.请看下列代码:
1)publicclassOuter{
2)voidfn(inti){
3)classInner{
4)voidprint(){
5)System.out.println(i);
6)}
7)}
8)Innerin=newInner();
9)in.print();
10)}
11)}
12)classTest{
13)publicstaticvoidmain(Stringargs[]){
14)Outerout=newOuter();
15)out.fn(100);
16)}
17)}
关于上述代码说法正确的是:
A.在第5行出现编译错误,fn方法的参数必须用final修饰
B.在第3行出现编译错误,在方法的内部不能写类
C.在第8行出现编译错误,在方