OOP考试题
考试时间:120分钟
考试总分:100分
一、选择题(不定项选择)(2分/题*37 = 74分)
1.类A,B的定义如下:
class A {
private int a = 100;
A() {
"A()");
}
}
class B extends A {
private int a = 200;
B() {
"B()");
}
}
运行下面的代码:
new B();
输出的结果是:()。
A.
A() 100
B() 200
B.
A() 200
B() 200
C.
B() 200
A() 100
D.
B() 200
A() 200
2.
程序执行的结果是:()。
public class Point{
int y = 7;
public void step(int y) {
y += y;
}
public static void main(String[] args) {
Point p = new Point();
(10);
}
}
3.下面代码运行的结果是()
class F{
String name = “name_F”;
private int age;
public F(){}
}
class C extends F{
String name = “name_C”;
public C(){}
public static void main(String[] args){
F f = new C();
C c = new C();
+”“+;
}
}
name_C
name_F
name_C
name_F
4.(单选题)程序的执行结果是:()。
public class Question {
private int num;
public static void main(String [] args){ Question q = new Question();
=13;
update(q);
}
public static void update(Question q){ =9;
}
}
5.
class Base{
static void test(){
}
}
public class Child extends Base{
static void test(){
}
public static void main(String[] args){
Base base = new Child();
Child child = new Child();
();
();
}
}
程序运行的结果是()
A.() ()
B.() ()
C.() ()
D.() ()
6、(单选题)程序执行的结果是:()。
public class Answer {
public static void main(String[] args) { int score = 20;
Answer ans= new Answer();
(score);
" main: score = " + score);
}
void add(int score) {
" add: score=" + score++);
}
}
: score=21
main: score = 21
: score=20
main: score = 21
: score=21
main: score = 20
: score=20
main: score = 20
7.
public class Foo {
public static void main(String[]args){ Foo1 foo1=new Foo1();
}
int a=10;
public Foo(){
add();
}
public void add(){
a++;
}
}
class Foo1 extends Foo{
int a=11;
public Foo1(){}
public void add(){
a++;
}
}
程序运行结果()
1 10
1 11
1 11
1 10
8.(单选题)下列代码编译或运行的结果是:()。
public class Snow{
public String jump(int x, int y) {
return "jump one";
}
public String jump(int[] vals) {
return "jump two";
}
public static void main(String[] args) { Snow s=new Snow();
5));
}
}
String jump(int[] vals) {行,编译出错
5));行,抛出运行时异常
C.输出:jump one
D.输出:jump two
9.
(单选题)关于下列代码说法正确的是:()。public class Storm {
public void find() {
}
public String find() {
return "find";
}
public double find(int x) {
return ;
}
A.无编译错误
B.代码 public String find() { 行,出现编译错误
C.代码 public double find(int x) {行,出现编译错误
D.代码 return "find";行处出现编译错误
10.下列哪些叙述是正确的()
A.在一个类中,方法不能与类名相同
B.abstract 可以修饰属性、方法和类
C.实例方法可直接调用本类的static方法和非static方法D.static方法不能调用非static方法
11.
(单选题)请看下列代码:
class ClassA {}
class ClassB extends ClassA {}
class ClassC extends ClassA {}
public class Test{
public static void main(String[] args) {
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
<插入代码>
}
}
下列选项中放置在<插入代码>处,使程序编译正确的是:()。 = p1;
=p2;
= p4;
= (ClassC)p1;
12.以下说法正确的是()
A.子类不能继承父类的构造方法
B.子类的构造方法可以访问父类的构造方法
C.子类不可直接访问父类的私有属性
D.子类可以重写父类的所有方法
13.关于接口,以下说法错误的是()
A.接口中可以定义非抽象方法
B.接口可以继承多个接口
C.接口中可以定义没有初始化的变量
D.接口可以实现接口
14.
(单选题)请看下列代码编译和运行的结果是:()。public class Teacher {
private String name="sun";
public static void main(String[] args) { Teacher[] teachers=new Teacher[2];
}
}
2
2
1
D.运行时抛出NullPointerException异常
15.
class Base{
private int base = 10;
public Base(){
test(base);
}
void test(int base){
++ ;
}
}
public class Child{
private int child = 20;
public Child(){
test(child);
}
void test(int child){
-- ;
}
public static void main(String[] args){
new Child();
}
}
程序运行的结果是()
A.19
B.11 19
C.11 20
D.10 19
16、
(单选题)下列代码编译和运行的结果是:()。
class Person {
String name = " ";
public Person(String name) {
= name;
}
}
class Employee extends Person {
String empNO = "0000";
public Employee(String empNO) {
= empNO;
}
}
public class EmployeeTest {
public static void main(String[] args) {
Employee e = new Employee("1109");
}
}
A.输出:0000
B.输出:1109
C.代码public Employee(String empNO) {行,出现编译错误
D.抛出运行时异常
17.在Java中,关于final关键字的说法正确的是()
修饰的变量,一旦赋值就不能被更改
修饰的类只能被一个子类继承
修饰的方法,不能在子类中被覆盖
修饰的方法,不能被子类继承
18.
(单选题)下列代码编译和运行的结果是:()。class A {
public void start() {
"A Start");
}
}
public class B extends A {
public void start() {
"B Start");
}
public static void main(String[] args) { ((A) new B()).start();
}
}
A.输出:A Start
B.输出:B Start
C.输出:A Start
B Start
D.编译错误
19.
1) public interface Test{
2) static public final int num = 10;
3) public static void add();
4) public String test(){};
5) public long delete();
6)}
关于上面的代码,以下说法错误的是()
A.第 2)行代码有编译错误
B.第 3)行代码没有编译错误
C.第 4)行代码有编译错误
D.第 5)行代码有编译错误
20.
(单选题)关于下列代码说法正确的是:()。
public interface A {
public void doSomething(String thing);
}
interface B {
}
interface C extends A, B {
}
interface D {
public void doIt(String thing);
}
class AImpl implements C ,D{
public void doSomething(String msg) {}
public void doIt(String thing) {}
}
A.所有类和接口都编译成功
B.接口A编译失败
C.类AImpl编译失败
D.接口C编译失败
21.关于类、抽象类和接口,以下说法正确的是()A.接口可以继承多个接口
B.抽象类不能实现接口
C.一个类只能继承一个类,但可以实现多个接口
D.抽象类实现接口,可以不实现接口的方法
22. (单选题)关于下列代码说法正确的是:()。
public class Cell {
private final int id;
public Cell(int id) {
= id;
}
public void updateId(int id) {
= id;
}
public static void main(String[] args) {
Cell cell = new Cell(1001);
(1002);
}
}
A.编译错误
B.运行时异常抛出
C.运行后,cell对象属性id的值没有改变,仍然是1001
D.运行后,cell对象属性id的值改变成新的值1002
23、(单选题)下列选项中,不属于Java 的访问控制修饰符的是:()。
24.下面关于变量的说法正确的是()
A.实例变量可以通过类名直接调用
B.类变量可以通过类名直接调用
中的参数传递都是值传递
D.在不同的作用域不能定义相同的变量
25.
(单选题)下面关于import, class和package的声明顺序正确的是:()。
, import, class
, import, package
, package, class
, class, import
26.下列代码有编译错误的是第()行
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)
27. (多选题)有一个名为Product的类,下列方法中属于该类的构造方法的是:()。
Product(){}
Product(String name){}
void Product(){}
void Product(String name){}
28.下列代码的运行结果是()
public class Test{
private int num;
private static Test test;
public Test(int num){
= ++ num;
}
static{
int num = 16;
test = new Test(num);
++ ;
}
public static void main(String[] args){
test = new Test(13);
}
}
A.14
B.15
C.16
D.17
29. (多选题)请看下列代码:
public class Tetromino {
protected int move(int x) {
return 0;
}
}
class T extends Tetromino {
<插入代码>
}
在<插入代码>处填入选项中的代码,使T类没有编译错误的是:()。 int move(int x) { return 0; }
int move(int x) { return 0; }
int move(long x) { return 0; }
long move(int x) { return 0; }
30.仔细分析下列代码,请指出错误的行()。
public class SomeThing{
private String str;
public int addOne(final int x){
return ++x;
}
}
class SomeThing
B.private String str;
C.public int addOne(final int x)
D.return ++x;
31.(多选题)下列关于JVM的内存结构描述正确的是:()。
A.类的各种信息在堆中保存
B.栈用于存放程序运行过程当中所有的局部变量
C.堆一般用于存储使用new关键字创建的对象
D.类是JVM的内存结构
32.下列代码的运行结果是()
public static void main(String[] args){
String str = "420";
str += 42;
}
A. 42
B. 420
C. 462
D. 42042
33. (多选题)请看下列代码:
public class Foo {
static void alpha() { /* more code here */}
void beta() { /* more code here */}
}
下列说法正确的是:()。
是调用beta方法的正确方式
是调用alpha方法的正确方式
方法可以直接调用alpha方法
方法可以直接调用beta方法
34.查看如下代码:
public class Foo {
public void method(String str,int age){}
}
下列选项中,和 Foo 类中 method 方法重载的方法是()。
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){}
35.下列代码的输出结果是:()。
public class StaticFoo {
int num;
static int x;
public static void main(String[] args) { StaticFoo foo1 = new StaticFoo (); ++;
++;
StaticFoo foo2 = new StaticFoo (); ++;
++;
StaticFoo foo3 = new StaticFoo (); ++;
++;
++;
",");
}
}
,3
,3
,4
,4
36. 下面关于interface,叙述错误的是:()
A.一个interface可以继承多个interface
B.接口中的方法可以由private修饰
中可以定义static final 常量
中可以无任何方法定义
37.下列代码的输出结果是: ()。
public class A {
public void info(){
"A info");
}
}
public class B extends A{
public void info(){
"B info");
}
public static void main(String[] args) { A a=new B();
();
}
}
A. B info
A info
B. A info
B info
C. A info
D. B info
二、填空题(6分)
1、
public interface InterfaceDemo{
public static final int num=12;
____○1____ void add();
}
abstract class Demo implements InterfaceDemo{ ___○2_____ int getNumber();
}
class Interfacetest extends Demo{
_______○3_________
public void add(){}
}
三、简答题(5 + 5 = 10分)
1.Overload和Override有什么区别Overloaded的方法是否可以改
变返回值类型
2.final的特性
四、附加题(10分)
(1)4分:
定义一个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)3分:
定义类Kids1继承ManKind,并包括
成员变量 int yearsOld;
方法 printAge() 打印 yearsOld 的值。
(3)3分:
在Kids1类的main方法中实例化Kids1的对象 someKid,用该对象访问其父类的成员变量及方法。