1、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() 200
2、C.B() 200A() 100D.B() 200A() 2002. 下列说法正确的是( D )A. 所有类都必须定义构造方法( 构造器)B. 构造方法必须初始化类的所有数据成员C. 子类定义了构造器后,不再调用父类的构造器D. 构造方法可以访问类的非静态成员3. 在 Java 中,哪个关键字使类不能派生子类?, ( A )A : final B : public C : private D : native 4. class Basestatic void test()System.out.println(“Base.test()”);public class Child extends B
3、asestatic 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.下列哪些叙述是正
4、确的( 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 关键字和类关联,而不是和特定的对象关联
5、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.
6、 1C. 2D. 311.下列语句的序列执行后,k 的值是 ( B )int m=3,n=6,k=0;While(m+)(-n)+k;A.0 B.1 C.2 D.312.下列哪一项不是面向对象的典型特征( D )A 封装 B.继承C. 多态 D.抽象13.(多选)在 java 中,关于构造方法,下列说法正确的是 ( ABD )A.构造方法的名称必须与类名相同B.构造方法可以带参数C.构造方法不可以重载D.构造方法绝对不能有返回值14.下面关于变量的说法正确的是( BC )A 实例变量可以通过类名直接调用B 类变量可以通过类名直接调用C. Java 中的参数传递都是值传递D. 在不同的作用域不能
7、定义相同的变量15.下列代码有编译错误的是第( C )行1) public class Test2) public static void main(String args)3) int arr1 = new int12;4) char arr2 = new char;5) int arr3 = ;6) Object obj = new Object4; 7) Object obj1 = new object9;8) 9) A. 5)B. 5) 7)C. 4) 7)D. 4)16.下列代码的运行结果是( A )public class Testprivate int num;private s
8、tatic Test test;public Test(int num)this.num = + num;staticint 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 SomeThingprivate String str;public int addOne(final
9、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 publi
10、c 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
11、class Test public static void main(String args) String str=“420“;str+=42;System.out.println(str);What is the output?A. 42 B.420 C. 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()
12、二、 简答题(2*6 = 12 分)1. Overload 和 Override 有什么区别?重写:发生在父子类中,方法名称相同,参数列表相同,方法体不同遵循“运行期绑定“,看对象的类型来调用方法.重载:发生在一个类中,方法名称相同,参数列表不同,方法体不同遵循“编译期绑定“,看参数引用的类型来绑定调用方法.2. final 的特性?final:最终的1)修饰变量:变量不能被改变2)修饰方法:方法不能被重写3)修饰类:类不能被继承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,用该对象访问其父类的成员变量及方法。