CoreJavaOOP考试题考试时间:90分钟考试总分:100分一、选择题(不定项选择)(22*4=88)1.类A,B的定义如下:class A {private int a = 100;A() {System.out.print("A()");System.out.println(a);}}class B extends A {private int a = 200;B() {System.out.print("B()");System.out.println(a);}}运行下面的代码:new B();输出的结果是:(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.class Base{static void test(){System.out.println(“Base.test()”);}}public class Child extends Base{static void test(){System.out.println(“Child.test()”);}public static void main(String[] args){Base base = new Child();Child child = new Child();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.a bstract 可以修饰属性、方法和类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. String s=new String(“xyz”)创建了几个对象(C);A. 0B. 1C. 2D. 311.下列语句的序列执行后,k的值是( B )int m=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)public class Test{2)public static void main(String[] args){3)int[] arr1 = new int[12];4)char[] arr2 = new char[];5)int[] arr3 = {};6)Object[] obj = new Object[4];7)Object obj1 = new object[9];8)}9)}A.5)B.5) 7)C.4) 7)D.4)16.下列代码的运行结果是(A )public class Test{private int num;private static Test test;public Test(int num){this.num = ++ num;}static{int num = 16;test = new Test(num);++ test.num;}public static void main(String[] args){test = new Test(13);System.out.println(test.num);}}A.14B.15C.16D.1717.仔细分析下列代码,请指出错误的行(D )。
public class SomeThing{private String str;public int addOne(final int x){return ++x;}}A.public class SomeThingB.private String str;C.public int addOne(final int x)D.return ++x;18. Java中访问控制符说法错误的是?, ( B C )A : protected声明的,在同一package中其他类可以访问。
B : friendly声明,继承类中不可以访问。
C : Java中未声明控制符的,默认为public。
D : public声明的,非同一个package也能访问。
19.查看如下代码:public class Foo {public void method(String str,int age){ }}下列选项中,和Foo 类中method 方法重载的方法是(BCD)。
A.public int method(String str,int age){}B.public void method(int year,String s){}C.public int method(int year,String s){}D.public int method(String str){}20.下列语句创建对象的总个数是:(A)。
String s=“a”+”b”+”c”;A.1B.2C.3D.421. Question ( D )public class Test {public static void main(String[] args) {String str="420";str+=42;System.out.println(str);}}What is the output?A. 42B.420C. 462 D 42042 E Compliation fails.F An exception is thrown at runtime.22.class Card{}下列不属于Card 类构造方法是:(C )A. Card(){}B. public Card(){}C. public void Card(){}D. private Card(){}二、简答题(2*6 = 12分)1.Overload和Override有什么区别?重写:发生在父子类中,方法名称相同,参数列表相同,方法体不同遵循"运行期绑定",看对象的类型来调用方法.重载:发生在一个类中,方法名称相同,参数列表不同,方法体不同遵循"编译期绑定",看参数引用的类型来绑定调用方法.2.final的特性?final:最终的1)修饰变量:变量不能被改变2)修饰方法:方法不能被重写3)修饰类:类不能被继承三、附加题编程题(选做)(1)定义一个ManKind类,包括成员变量int sex 和int salary;方法void manOrWorman():根据sex的值显示“man”(sex==1)或者“women”(sex==0);方法void employeed():根据salary的值显示“no job”(salary==0)或者“job”(salary!=0)。
(2)定义类Kids1继承ManKind,并包括成员变量int yearsOld;方法printAge() 打印yearsOld 的值。
(3)在Kids1类的main方法中实例化Kids1的对象someKid,用该对象访问其父类的成员变量及方法。