山东大学软件学院面向对象程序设计期中测试题

序号可能有问题

OO期中题目2022.04

  • 选择题:(每题2分,共40分)
  1. 在Java中,已定义两个接口B和C,要定义一个类同时实现这两个接口,正确的是(    )

A interface A extends B,C

B interface A implements B,C

C class A implements B,C

D class A implements B, implements C

  1. 如下所示代码:

public class Test05_01{    

private float a;

public static void m ( ){    }

}

如何使成员变量a被方法m( )访问(    )。

A、将private float a改为public float a

B、将private float a改为static float a

C、将private float a改为protected float a

D、将private float a改为float a

  1. 下列哪种类成员修饰符修饰的变量只能在本类中被访问(    )。

A、protected B、default C、private D、public

  1. 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要由子类重写,应该使用(    )关键字来声明父类的这些方法

Afinal B abstract    Cstatic Dvoid

  1. 下面关于方法的说法不正确的一项是(    )。

A、类的私有方法不能被其他类直接访问。

B、Java中的构造方法名必须和类名相同。

C、方法体是对方法的实现,包括变量声明和合法语句。

D、如果一个类定义了构造方法,也可以用该类的默认构造方法。

  1. 设 i,j 为类 x 中定义的 double 型变量名,下列 x 类的构造函数中不正确的是(    )。

A、double x(double k ){ i=k; return i; }

B、x(double m, double n ){ i=m; j=n; }

C、x( ){i=0;j=0 }

D、x(double k ){ i=k; }

  1. 下列程序的运行结果是(    )。

public class Test05_02 extends x{    

int ab(){

static int a = 10;

a++;

System.out.println(a);

}

public static void main(String[] args) {

Test05_02 b = new Test05_02 ();

b.ab();

}

}

A、10 B、编译错误

C、11 D、运行成功,但不输出

  1. f1 f2同一类两个成员函数,但f1不能调用f2,说明(    )。

A、f1 f2都是静态函数

B、f1是静态,f2不是

C、f1不是,f2是静态

D、f1 f2都不是静态函数

  1. 在派生类中能直接访问基类的(    )。

A、公有成员,私有成员  B、保护成员,私有成员 

C、不可访问成员,私有成员  D、公有成员,保护成员

  1. 下面关于构造方法的描述有误的一项是(    )。

A、构造方法必须要有返回类型的声明。

B、构造方法和类中的方法很相似:有访问修饰符、方法名、参数列表、方法体。

C、构造方法当成是一个特殊的方法,这个方法的作用就是用来产生一个类的实例。

D、构造方法的方法名必须和类名完全相同。

  1. 下面关于变量说法错误的一项是(    )。

A、对于成员变量,我们可以不需要手动的显式初始化,因为系统在创建一个新的对象的时候,会给这些成员变量赋一个初值。

B、对于引用变量,它的默认初值是null而非相应的引用类型对象,也就是说,它并不是指向任何对象的首地址。

C、系统会对全局(成员)变量指定默认的值,也会对局部变量赋值。

D、局部变量在使用之前,必须对其进行显式初始化。

  1. 对下列程序说法正确的是(    )

public class Test7{

public static void main(String[] avgs){    

String s1 = "Hello world";    

String s2 = "Hello";   

s2 = s2 + " world";

System.out.println(s1 == s2);

}

}

A、 true B、false C、编译错误 D、Hello world

  1. 给定JAVA代码如下,关于super的用法,以下描述正确的是(   

class C extends B {

    public C(){

         super();     

  }

 }

A、用来调用类B中定义的super()方法

B、用来调用类C中定义的super()方法

C、用来调用类B中的无参构造方法

D、用来调用类B中第一个出现的构造方法

  1. 如果局部变量和成员变量同名,如何在局部变量作用域内引用成员变量(    )。

A、不影响,系统可以自己区分

B、不能引用,必须改名,使它们的名称不相同

C、在成员变量前加this,使用this访问该成员变量

D、在成员变量前加super,使用super访问该成员变量

  1. 下列关于内部类说法错误的一项是(    )。

A、内部类可用private或protected修饰符修饰

B、内部类不能有自己的成员方法和成员变量

C、除static内部类外,不能在类内声明static成员

D、内部类可以作为其他类的成员,而且可访问它所在的类的成员

  1. 下面说法不正确的一项是(    )。

A、abstract和final能同时修饰一个类

B、抽象类既可以做父类,也可以做子类

C、声明为final类型的方法不能在其子类中重新定义

D、抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类或接口

  1. 有一个类MyClass,它的构造方法声明正确的是(    )

A) void MyClass(int x) {...} B) Myclass(int x){...}

C) public MyClass(int x){…} D) public void MyClass(int x){…}

  1. 重载函数在调用时选择的依据中,(    )是错误的。

A、参数个数   B、参数的类型   C、参数的顺序    D、函数类型

  1. 某一基类有构造函数A(),析构函数~A(),其派生类B的构造函数析构函数分别为B(),~B(),程序说明B的对象b时,下列说法正确的是(   )

A. 开始时,先调用 A(),再调用B(),结束时,先调用~A(),再调用~B()

B. 开始时,先调用 A(),再调用B(),结束时,先调用~B(),再调用~A()

C. 开始时,先调用 B(),再调用A(),结束时,先调用~A(),再调用~B()

D. 开始时,先调用 B(),再调用A(),结束时,先调用~B(),再调用~A()

  1. 以下哪一项属于面向对象方法的多态性(   )。

A、一个类可以派生出多个特殊类

B、一个对象在不同的运行环境中可以有不同的变体

C、针对同一消息,不同的对象可以以适合自身的方式加以响应

D、一个对象可以是由多个其他对象组合而成的    

  • 简答题:(每题2分,共20分)
    1. 我们使用 ________ 这一术语表示类的一个具体代表或者范例,使用 ________ 来表示它所维护的内部变量,并且客户不能直接改变这些数值,只有和类相关的 ________ 才能改变它们。
    2. 对于任何消息传递表达式都有3个确定的部分:________  、________  和用于响应消息的 ________ 。
    3. 构造函数的两项主要任务是 ________________________ 和 ________________________ 。
    4. 检验两个概念是否为继承关系,采用 ___________ 规则。
    5. 一个对象可以有两个或更多的父类,这种特性称作___________________ 。

  • 简答题:(每题10分,共40分)
  1. 在类的定义中,可视性修饰符的作用是什么?以Java或C++语言进行说明。
  2. 类的实例变量/方法和类变量/类方法的区别是什么?使用Java语言为类Animal定义一个类方法getNumbers(),并写出访问这一方法的代码。
  3. 请分别描述封装、继承的含义,并用Java或C++说明OOPL分别怎样实现了这两种面向对象的特征。
  4. 请说明重载、重置、重定义的区别,并分别用代码举例说明。

猜你喜欢

转载自blog.csdn.net/Sunnyztg/article/details/128438397