文档库 最新最全的文档下载
当前位置:文档库 › java面向对象试题

java面向对象试题

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,用该对象访问其父类的成员变量及方法。

相关文档