《第章面向对象程序设计习题.docx》由会员分享,可在线阅读,更多相关《第章面向对象程序设计习题.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第章面向对象程序设计习题 第6章面向对象程序设计一选择题 1下面有关类和对象的说法中,不正确的是。 A) 类是系统提供的一种数据类型B) 对象是类的实例 C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2面向对象的特点主要概括为。 A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性 C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性 3要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以。 A) 不使用任何修饰符B) 使用private修饰符 C) 使用public修饰符D) 使用internal修饰
2、符 4在C#中,访问修饰符修饰的字段只能由当前程序集访问。 A) private B) public C) protected D) internal 5类的字段和方法的默认访问修饰符是。 A) public B) private C) protected D) internal 6下列关于构造函数的描述中,不正确的是。 A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数 C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数 7下列关于构造函数的描述中,是正确的。 A) 构造函数名必须与类名相同B) 构造函数不可以重载 C) 构造函数不能带参数D)
3、构造函数可以声明返回类型 8下列的不是构造函数的特征。 A) 构造函数的函数名与类名相同B) 构造函数可以重载 C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型 9类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了修饰符。 ClassA Aobj=new ClassA(); (); A) public B) public static C) private D) virtual 10在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了。 A) 只读属性B) 只写属性C) 读写属性D) 不可读不可写属性11在C
4、#中,以下关于属性的描述中正确的是。 A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性 B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏 C) 要定义只读属性只需在属性名前加上readonly关键字 D) C#的类中不能自定义属性 12以下类MyClass的属性count属于属性。 class MyClass int i; int count get r eturn i; A) 只读B) 只写属性C) 读写D) 不可读不可写 13C#中的TestClass为一自定义类,其中有如下属性定义: public int Property 使用
5、以下语句创建了该类的对象,并让变量obj引用该对象。 TestClass obj=new TestClass(); 那么,可通过方式访问类TestClass的Property属性。 A) MyClass. Property B) obj. Property C) TestClass. Property D) obj. Property() 14关于C#语言的方法,下列叙述正确的是。 A) 方法的定义不能嵌套,但方法的调用可以嵌套 B) 方法的定义可以嵌套,但方法的调用不能嵌套 C) 方法的定义和调用都不能嵌套 D) 方法的定义和调用都可以嵌套 15以下所列的各方法头部中,正确的是。 A) vo
6、id 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的值为2 B) 属性y可读,但不可写,因此语句“=2;”是错误的 C) 属性y可写,但不可读
7、,因此语句“int x=;”是错误的 D) 属性y可读可写,变量x的值为1 17有以下类声明: 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调用重载方法时,系统根
8、据来选择具体的方法。 A) 参数的类型B) 参数的个数和类型 C) 参数个数D) 方法的返回值类型 20下列关于方法重载的说法中,完全正确的是。 A) 重载方法的参数个数必须不同B) 重载方法必须具有不同的形参列表 C) 重载方法必须具有不同的返回值类型D) 重载方法的参数类型必须不同 21关于静态成员,下列说法正确的是。 A) 同一个类中的静态成员,类实例化后,在不同的对象中形成不同的静态成员 B) 在类实例化后,同类型的对象都共享类的静态成员,静态成员只有一个版本 C) 在类定义时静态成员属于类,在类实例化后静态成员属于对象 D) 在类实例化后静态成员已被实例化,因此不同的对象有不同的静态
9、成员 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参数传递方法相同,都是把实参的内存地址传递给形参,
10、实参与形参指向同一个内 存存储区域,但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(maxva
11、l,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) 1B) 2C) 3D) 0 27在类MyClass中有下列方法定义: public void test(params int arr
12、) (使用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添加访问修饰符,并使
13、MyClass的可访问域保持不变,则应选择。 namespace test class MyClass int i; A) private B) public C) protected D) internal 29C#中MyClass为一个自定义类,其中有以下方法定义: public void Hello() 并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是。 MyClass obj=new MyClass() A) ()B) obj:Hello()C) D) MyClass:Hello 30下列的关键字中可用于引用类的当前实例的是。 A) base B
14、) this C) new D) override 31在C#中,以下有关索引器的参数个数的说法中正确的是。 A) 索引器只能有一个参数B) 索引器可以有多个参数 C) 索引器可以没有参数D) 索引器至少要有两个参数 32委托声明的关键字是。 A) delegate B) sealed C) operator D) event 33以下语句的作用是。 public delegate void Hello(string s); A) 声明了一个名称为Hello的全局方法B) 声明了一个名称为Hello的函数原型 C) 声明了一个名称为Hello的函数指针D) 声明了一个名称为Hello的委托类型
15、 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) 不确定的
16、 36有以下部分C#代码,其中MyDelegate是一个。 static void fun(string s) (s); public static void Main() MyDelegate p=new MyDelegate(fun); p(Hello!); A) 结构类型;B) 委托类型C) 函数D) 类名 37对于下面声明的委托和定义的类: delegate int Mydelegate(int n); class A public int f(int i) return 0; public void g(int j) public static int h(int k) return
17、 0; 下面语句中哪些是正确的。 Mydelegate d1=new Mydelegate;2MouseClicked +=; e. MouseClicked +=; 其中Method类中包含事件处理方法fun,然后引发该MouseClicked 事件,其结果为。 A) 方法被调用一次B) 方法被调用二次 C) 方法不会被调用D) 方法被调用四次 二填空题 1是面向对象编程的基础模块,在C#中,所有的内容都被封装在其中。 2声明类之后,通过new创建,它是一个引用类型的变量。 3静态字段是用修饰符声明的字段,无论存在多少个类实例,它们都共享一个字段副本。 4定义方法时使用的参数是,调用方法时使
18、用的参数是。 5数据类型说明符用来说明方法返回值的类型,如果没有返回值,则类型说明符应为。6下列方法的作用是求两个数的较大数,并把较大数作为返回值,请填空。 float max_v() float max; max=a; if(max= 0 & index = 0 & index 0) _年龄= value; get return _年龄; 8为什么使用属性? 答:属性是实现封装的一种方式,起到保护类成员变量的作用。调用简洁方便。而且,通过属性可以访问私有成员变量。 9属性的类型有什么? 答:属性类型有:读写属性,只读属性,只写属性。 11什么是索引器? 答:索引器是C#中的一种语法结构。如下
19、: 访问修饰符 数据类型this数据类型标识符 get;索引器的作用是什么? 答:作用:索引器是实现封装的一种方式,起到保护类成员的作用;同时使用起来简单方便:为集合对象创建索引器后,可以对类对象指定索引来直接访问数组元素即用索引数组的方式索引对象。 13. 索引器可以重载吗?可以为索引器指定几个索引器参数? 答:索引器可以重载。可以为索引器至少指定一个索引器参数。 14什么时候使用属性,什么时候使用索引器? 答:类中有成员变量就应该有属性。当成员变量是集合类型的时候,可以创建索引器。 五程序阅读题 1阅读下列程序,写出程序的输出结果。考察类对象 public class TPoint int
20、 x, y; public void setpoint(int x1,int y1) x = x1; y = y1; public void dispoint() (点:(0,1), x, y); class Program static void Main(string args) TPoint p1, p2; p1= new TPoint(); (2, 6); p2 = p1; (8, 3); (); (); 点:(8,3) 点:(8,3) 2阅读下列程序,写出程序的输出结果。考察方法参数传递 class Program static void f1(ref int a, ref int
21、b, out int sum, out int sub) int t; t=a; a=b;b=t; sum = a + b; sub = a - b; public static void Main(string args) int x=10, y=20,xx=30,yy=40; f1(ref x, ref y, out xx, out yy); (x=0,y=1,xx=2,yy=3, x,y,xx, yy); x=20,y=10,xx=30,yy=10 3阅读下列程序,写出程序的输出结果。考察索引器 public class Weeks string week= Sun, Mon, Tues, Wed, Thurs, Fri, Sat ; public string thisint i get if (i = 0 & i= 0 & i0 ) (0+1i,a,b); else (0-1i,a,-b); class Program public static void Main(string args) Complex x=new Complex(1,2);Complex y=new Complex(3,4); Complex z=new Complex(0,0); z=x+y; (); ();
限制150内