当前位置:文档之家› 面向对象程序设计 习题

面向对象程序设计 习题

第6章面向对象程序设计一.选择题1.下面有关类和对象的说法中,不正确的是【】。

A) 类是系统提供的一种数据类型B) 对象是类的实例C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2.面向对象的特点主要概括为【】。

A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3.要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【】。

A) 不使用任何修饰符B) 使用private修饰符C) 使用public修饰符D) 使用internal修饰符4.在C#中,【】访问修饰符修饰的字段只能由当前程序集访问。

A) private B) public C) protected D) internal5.类的字段和方法的默认访问修饰符是【】。

A) public B) private C) protected D) internal6.下列关于构造函数的描述中,不正确的是【】。

A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7.下列关于构造函数的描述中,【】是正确的。

A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8.下列的【】不是构造函数的特征。

A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【】修饰符。

ClassA Aobj=new ClassA();();A) public B) public static C) private D) virtual10.在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了【】。

A) 只读属性B) 只写属性C) 读写属性D) 不可读不可写属性11.在C#中,以下关于属性的描述中正确的是【】。

A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏C) 要定义只读属性只需在属性名前加上readonly关键字D) C#的类中不能自定义属性12.以下类MyClass的属性count属于【】属性。

class MyClass{ int i;int count { get { return i; } }}A) 只读B) 只写属性C) 读写D) 不可读不可写13.C#中的TestClass为一自定义类,其中有如下属性定义:public int Property{ …… }使用以下语句创建了该类的对象,并让变量obj引用该对象。

TestClass obj=new TestClass();那么,可通过【】方式访问类TestClass的Property属性。

A) MyClass. Property B) obj. PropertyC) TestClass. Property D) obj. Property()14.关于C#语言的方法,下列叙述正确的是【】。

A) 方法的定义不能嵌套,但方法的调用可以嵌套B) 方法的定义可以嵌套,但方法的调用不能嵌套C) 方法的定义和调用都不能嵌套D) 方法的定义和调用都可以嵌套15.以下所列的各方法头部中,正确的是【】。

A) void play(var a:Integer, var b:Integer) B) void play(int a, b)C) void play(int a, int b) D) Sub play(a as integer, b as integer) 16.在类A中定义了属性y:class A{ public int y{ get { return 1; }set { }}}并试图通过下列代码来实现对属性y的访问:A b=new A();=2;int x=;对此,下列说法正确的是【】。

A) 属性y可读可写,因此变量x的值为2B) 属性y可读,但不可写,因此语句“=2;”是错误的C) 属性y可写,但不可读,因此语句“int x=;”是错误的D) 属性y可读可写,变量x的值为117.有以下类声明:public class Class1{ private string _sData="OK!";privare string sData{ set { _sData = value;} }}在Main函数中,在成功创建该类的对象obj后,以下【】语句是合法的。

A) obj. _sData="Hello!" B) obj. set;C) obj. sData="Hello!"D) (obj. sData);18.在类的定义中,类的【】描述了该类的对象的行为特征。

A) 字段B) 方法C) 属性D) 类名19.调用重载方法时,系统根据【】来选择具体的方法。

A) 参数的类型B) 参数的个数和类型C) 参数个数D) 方法的返回值类型20.下列关于方法重载的说法中,完全正确的是【】。

A) 重载方法的参数个数必须不同B) 重载方法必须具有不同的形参列表C) 重载方法必须具有不同的返回值类型D) 重载方法的参数类型必须不同21.关于静态成员,下列说法正确的是【】。

A) 同一个类中的静态成员,类实例化后,在不同的对象中形成不同的静态成员B) 在类实例化后,同类型的对象都共享类的静态成员,静态成员只有一个版本C) 在类定义时静态成员属于类,在类实例化后静态成员属于对象D) 在类实例化后静态成员已被实例化,因此不同的对象有不同的静态成员22.下列关于静态方法的说法,错误的是【】。

A) 静态方法不对特定实例进行操作,不与实例相关联B) 使用静态方法的语法格式:类名.静态方法(实参列表)C) 静态方法只能访问类中的静态成员,不能访问非静态成员D) 静态方法不能访问类中的静态成员23.已知:int a=100;void Func(ref int b) { …… }则下列函数调用正确的是【】。

A) Func(ref(10*a)) B) Func(ref 10*a) C) Func(ref(a) )D) Func(ref a) 24.下面对方法中的ref和out参数说明错误的是【】。

A) ref和out参数传递方法相同,都是把实参的内存地址传递给形参,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值B) ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用处接受实参数据。

C) ref和out参数因为传递的是实参的地址,所以要求实参和形参的数据类型必须一致D) ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型25.设方法Max的签名为:public void Max(out int max, params int[] a),maxval是一个int型的值类型变量,arrayA是一个int型的数组对象,则下列调用该方法的语句中有错的是【】。

A) Max(maxval,4,5,3) B) Max(out maxval, 4, 5, 3)C) Max(out maxval, arrayA) D) Max(out maxval, 4, 5)26. 有以下类声明:class Class1{ public static int Count = 0;public Class1(){ Count++; }}在执行以下语句后,的值是【】。

Class1 o1 = new Class1();Class1 o2 = new Class1();A) 1 B) 2 C) 3 D) 027.在类MyClass中有下列方法定义:public void test(params int[] arr) { ("使用params参数!"); }public void test(int x, int y) { ("使用两个整形参数!"); }请问上述方法重载有无二义性若没有,则下列语句的输出为【】。

Myclass x=new MyClass();(0); (0,1); (0,1,2);A) 有语义二义性B) 使用params参数!使用params参数!使用params参数!C) 使用params参数!使用两个整形参数!使用params参数!D) 使用params参数!使用两个整形参数!使用两个整形参数!28.分析以下C#语句,注意类MyClass没有访问修饰符。

若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择【】。

namespace test{ class MyClass{ int i; }}A) private B) public C) protected D) internal29.C#中MyClass为一个自定义类,其中有以下方法定义:pub lic void Hello() { …… }并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是【】。

MyClass obj=new MyClass()A) () B) obj:Hello() C) D) MyClass:Hello30.下列的关键字中可用于引用类的当前实例的是【】。

A) base B) this C) new D) override 31.在C#中,以下有关索引器的参数个数的说法中正确的是【】。

A) 索引器只能有一个参数B) 索引器可以有多个参数C) 索引器可以没有参数D) 索引器至少要有两个参数32.委托声明的关键字是【】。

A) delegate B) sealed C) operator D) event33.以下语句的作用是【】。

public delegate void Hello(string s);A) 声明了一个名称为Hello的全局方法B) 声明了一个名称为Hello的函数原型C) 声明了一个名称为Hello的函数指针D) 声明了一个名称为Hello的委托类型34.有声明语句:delegate void TimeDelegate(string s),则以下可以和委托TimeDelegate绑定的方法是【】。

A) void f(){ }B) string f(){ }C) void f(string a){ }D) string f(string a){ }35.声明一个委托类型:public delegate int myCallBack(int x); 则以下可以和委托myCallBack 绑定的方法是【】A) void myCallBack(int x);B) int receive(int num);C) string receive(int x);D) 不确定的36.有以下部分C#代码,其中MyDelegate是一个【】。

相关主题