第5章 面向对象程序设计

一.选择题
1.下面有关类和对象的说法中,不正确的是【 A 】。
A) 类是系统提供的一种数据类型 B) 对象是类的实例
C) 类和对象的关系是抽象和具体的关系 D) 任何一个对象只能属于一个具体的类
2.面向对象的特点主要概括为【 B 】。
A) 可分解性、可组合型性和可分类性 B) 继承性、封装性和多态性
C) 封装性、易维护性、可扩展性和可通用性 D) 抽象性、继承性和封装性
3.要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【 D 】。
A) 不使用任何修饰符 B) 使用private修饰符
C) 使用public修饰符 D) 使用internal修饰符
4.在C#中,【 D】访问修饰符修饰的字段只能由当前程序集访问。
A) private B) public C) protected D) internal
5.类的字段和方法的默认访问修饰符是【 B 】。
A) public B) private C) protected D) internal
6.下列关于构造函数的描述中,不正确的是【 B 】。
A) 构造函数中,不可以包含return语句 B) 一个类只能有一个构造函数
C) 实例构造函数在生成类实例时被自动调用 D) 用户可以定义无参构造函数
7.下列关于构造函数的描述中,【 A 】是正确的。
A) 构造函数名必须与类名相同 B) 构造函数不可以重载
C) 构造函数不能带参数 D) 构造函数可以声明返回类型
8.下列的【 D 】不是构造函数的特征。
A) 构造函数的函数名与类名相同 B) 构造函数可以重载
C) 构造函数可以带有参数 D) 可以指定构造函数的返回值类型
9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【 】修饰符。
ClassA Aobj=new ClassA();
ClassA.M1();
A) public B) public static C) private D) virtual
10.在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了【 D 】。
A) 只读属性 B) 只写属性 C) 读写属性 D) 不可读不可写属性
11.在C#中,以下关于属性的描述中正确的是【B 】。
A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性
B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏
C) 要定义只读属性只需在属性名前加上readonly关键字
D) C#的类中不能自定义属性
12.以下类MyClass的属性count属于【 A 】属性。
class MyClass
{ int i;
int count { get { return i; } }
}
A) 只读 B) 只写属性 C) 读写 D) 不可读不可写
13.C#中的TestClass为一自定义类,其中有如下属性定义:
public int Property{ …… }
使用以下语句创建了该类的对象,并让变量obj引用该对象。
TestClass obj=new TestClass();
那么,可通过【 B 】方式访问类TestClass的Property属性。
A) MyClass. Property B) obj. Property
C) TestClass. Property D) obj. Property()
14.关于C#语言的方法,下列叙述正确的是【A 】。
A) 方法的定义不能嵌套,但方法的调用可以嵌套
B) 方法的定义可以嵌套,但方法的调用不能嵌套
C) 方法的定义和调用都不能嵌套
D) 方法的定义和调用都可以嵌套
16.在类A中定义了属性y:
class A
{ public int y
{ get { return 1; }
set { }
}
}
并试图通过下列代码来实现对属性y的访问:
A b=new A();
b.y=2;
int x=b.y;
对此,下列说法正确的是【 】。
A) 属性y可读可写,因此变量x的值为2
B) 属性y可读,但不可写,因此语句“b.y=2;”是错误的
C) 属性y可写,但不可读,因此语句“int x=b.y;”是错误的
D) 属性y可读可写,变量x的值为1
17.有以下类声明:
public class Class1
{ private string _sData=“OK!”;
privare string sData
{ set { _sData = value;} }
}
在Main函数中,在成功创建该类的对象obj后,以下【 C 】语句是合法的。
A) obj. _sData=“Hello!” B) obj. set(obj.sData);
C) obj. sData=“Hello!” D) Console.WriteLine(obj. sData);
18.在类的定义中,类的【 B 】描述了该类的对象的行为特征。
A) 字段 B) 方法 C) 属性 D) 类名
19.调用重载方法时,系统根据【 B 】来选择具体的方法。
A) 参数的类型 B) 参数的个数和类型
C) 参数个数 D) 方法的返回值类型
20.下列关于方法重载的说法中,完全正确的是【 B 】。
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(10a)) B) Func(ref 10a) 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)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值