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()100B()200B.A()200B()200C.B()200A()100D.B()200A()2002.下列说法正确的是(D)A.所有类都必须定义构造方法(构造器)B.构造方法必须初始化类的所有数据成员C.子类定义了构造器后,不再调用父类的构造器D.构造方法可以访问类的非静态成员3.在Java中,哪个关键字使类不能派生子类?,(A)A:finalB:publicC:privateD:native4.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.同一个类的不同对象共用一个this8下列关于继承的说法哪个是正确的?(B)A.子类只继承父类public方法和属性B.子类继承父类的非私有属性和方法C.子类只继承父类的方法,而不继承父类的属性D.子类将继承父类的所有属性和方法9.在Java中,关于final关键字的说法正确的是(AC)A.final修饰的变量,一旦赋值就不能被更改B.final修饰的类只能被一个子类继承C.final修饰的方法,不能在子类中被覆盖D.final修饰的方法,不能被子类继承10.Strings=newString(“xyz”)创建了几个对象(C);A.0B.1C.2D.311.下列语句的序列执行后,k的值是(B)intm=3,n=6,k=0;While((m++)(--n))++k;A.0B.1C.2D.312.下列哪一项不是面向对象的典型特征(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.14B.15C.16D.1717.仔细分析下列代码,请指出错误的行(D)。publicclassSomeThing{privateStringstr;publicintaddOne(finalintx){return++x;}}A.publicclassSomeThingB.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.1B.2C.3D.421.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,用该对象访问其父类的成员变量及方法。