收藏 分销(赏)

面向对象程序设计习题.docx

上传人:精*** 文档编号:3858259 上传时间:2024-07-22 格式:DOCX 页数:38 大小:60.29KB
下载 相关 举报
面向对象程序设计习题.docx_第1页
第1页 / 共38页
面向对象程序设计习题.docx_第2页
第2页 / 共38页
面向对象程序设计习题.docx_第3页
第3页 / 共38页
面向对象程序设计习题.docx_第4页
第4页 / 共38页
面向对象程序设计习题.docx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、第6章 面向对象程序设计一选择题1下面有关类和对象的说法中,不对的的是【 】。A) 类是系统提供的一种数据类型B) 对象是类的实例C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2面向对象的特点重要概括为【 】。A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【 】。A) 不使用任何修饰符B) 使用private修饰符C) 使用public修饰符D) 使用internal修饰符4在C#中,【 】访

2、问修饰符修饰的字段只能由当前程序集访问。A) privateB) publicC) protectedD) internal5类的字段和方法的默认访问修饰符是【 】。A) publicB) privateC) protectedD) internal6下列关于构造函数的描述中,不对的的是【 】。A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7下列关于构造函数的描述中,【 】是对的的。A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8下列

3、的【 】不是构造函数的特性。A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【 】修饰符。ClassA Aobj=new ClassA();ClassA.M1();A) publicB) public staticC) privateD) virtual10在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 return i; A) 只读B) 只写属性C) 读写D) 不可读不可写13C#中的TestClass为一自定义类,其中有如下属性定义:public int Property 使用以下语句创建了该类的对象,

5、并让变量obj引用该对象。TestClass obj=new TestClass();那么,可通过【 】方式访问类TestClass的Property属性。A) MyClass. PropertyB) obj. PropertyC) TestClass. PropertyD) obj. Property()14关于C#语言的方法,下列叙述对的的是【 】。A) 方法的定义不能嵌套,但方法的调用可以嵌套B) 方法的定义可以嵌套,但方法的调用不能嵌套C) 方法的定义和调用都不能嵌套D) 方法的定义和调用都可以嵌套15以下所列的各方法头部中,对的的是【 】。A) void play(var a:Int

6、eger, 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 yget return 1; set 并试图通过下列代码来实现对属性y的访问:A b=new A();b.y=2;int x=b.y;对此,下列说法对的的是【 】。A) 属性y可读可写,因此变量x的值为2B) 属性y可读,但不可写,因此语句“b.y=2;”是错误的C) 属性y可写,但不可读,因此语句“int x=b.y;

7、”是错误的D) 属性y可读可写,变量x的值为117有以下类声明:public class Class1private string _sData=OK!; privare string sDataset _sData = value;在Main函数中,在成功创建该类的对象obj后,以下【 】语句是合法的。A) obj. _sData=Hello!B) obj. set(obj.sData);C) obj. sData=Hello!D) Console.WriteLine(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) M

11、ax(maxval,4,5,3)B) Max(out maxval, 4, 5, 3)C) Max(out maxval, arrayA)D) Max(out maxval, 4, 5)26. 有以下类声明:class Class1public static int Count = 0;public Class1()Count+;在执行以下语句后,Class1.Count的值是【 】。Class1 o1 = new Class1();Class1 o2 = new Class1();A) 1B) 2C) 3D) 027在类MyClass中有下列方法定义:public void test(par

12、ams int arr) Console.Write(使用params参数!); public void test(int x, int y) Console.Write(使用两个整形参数!); 请问上述方法重载有无二义性?若没有,则下列语句的输出为【 】。Myclass x=new MyClass();x.test(0);x.test(0,1);x.test(0,1,2);A) 有语义二义性B) 使用params参数!使用params参数!使用params参数!C) 使用params参数!使用两个整形参数!使用params参数!D) 使用params参数!使用两个整形参数!使用两个整形参数!

13、28分析以下C#语句,注意类MyClass没有访问修饰符。若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择【 】。namespace testclass MyClassint i;A) privateB) publicC) protectedD) internal29C#中MyClass为一个自定义类,其中有以下方法定义:public void Hello() 并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是【 】。MyClass obj=new MyClass()A) obj.Hello()B) obj:Hello

14、()C) MyClass.HelloD) MyClass:Hello30下列的关键字中可用于引用类的当前实例的是【 】。A) baseB) thisC) newD) override31在C#中,以下有关索引器的参数个数的说法中对的的是【 】。A) 索引器只能有一个参数B) 索引器可以有多个参数C) 索引器可以没有参数D) 索引器至少要有两个参数32委托声明的关键字是【 】。A) delegateB) sealedC) operatorD) event33以下语句的作用是【 】。public delegate void Hello(string s);A) 声明了一个名称为Hello的全局方法

15、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

16、(int x);B) int receive(int num);C) string receive(int x);D) 不拟定的36有以下部分C#代码,其中MyDelegate是一个【 】。static void fun(string s) Console.WriteLine(s); public static void Main()MyDelegate p=new MyDelegate(fun);p(Hello!);A) 结构类型;B) 委托类型C) 函数D) 类名37对于下面声明的委托和定义的类:delegate int Mydelegate(int n);class Apublic in

17、t f(int i) return 0; public void g(int j) public static int h(int k) return 0; 下面语句中哪些是对的的【 】。Mydelegate d1=new Mydelegate(A.h);/语句1A a=new A();Mydelegate d2=new Mydelegate(a.f);/语句2Mydelegate d3=new Mydelegate(a.g);/语句3Mydelegate d4=new Mydelegate(a.h);/语句4A) 语句1、语句2、语句3、语句4B) 语句1、语句2C) 语句3、语句4D) 语

18、句2、语句338以下用于定义事件的关键字是【 】。A) delegateB) eventC) thisD) value39将发生的事件告知其他对象(订阅者)的对象称为事件的【 】。A) 广播者B) 发行者C) 告知者D) 订阅者40已知类MyClass中事件MouseClicked定义如下:public delegate void mydelegate();public event mydelegate MouseClicked();执行下列语句:Method obj=new Method();MyClass e=new MyClass();e. MouseClicked +=obj.fun;

19、e. MouseClicked +=obj.fun;其中Method类中包含事件解决方法fun,然后引发该MouseClicked 事件,其结果为【 】。A) obj.fun方法被调用一次B) obj.fun方法被调用二次C) obj.fun方法不会被调用D) obj.fun方法被调用四次二填空题1【 类 】是面向对象编程的基础模块,在C#中,所有的内容都被封装在其中。2声明类之后,通过new创建【 类对象 】,它是一个引用类型的变量。3静态字段是用【 static 】修饰符声明的字段,无论存在多少个类实例,它们都共享一个字段副本。4定义方法时使用的参数是【形参】,调用方法时使用的参数是【 实

20、参 】。5数据类型说明符用来说明方法返回值的类型,假如没有返回值,则类型说明符应为【 void 】。6下列方法的作用是求两个数的较大数,并把较大数作为返回值,请填空。float max_v(【 (1)】) float max;max=a;if(max= 0 & index = 0 & index 0) _年龄= value; get return _年龄; 8为什么使用属性? 答:属性是实现封装的一种方式,起到保护类成员变量的作用。调用简洁方便。并且,通过属性可以访问私有成员变量。 9属性的类型有什么? 答:属性类型有:读写属性,只读属性,只写属性。 11什么是索引器? 答:索引器是C#中的一

21、种语法结构。如下: 访问修饰符 数据类型this数据类型 标记符 get;/get访问器 set;/set访问器 12. 索引器的作用是什么? 答:作用:索引器是实现封装的一种方式,起到保护类成员的作用;同时使用起来简朴方便:为集合对象创建索引器后,可以对类对象指定索引来直接访问数组元素即用索引数组的方式索引对象。 13. 索引器可以重载吗?可认为索引器指定几个索引器参数?答:索引器可以重载。可认为索引器至少指定一个索引器参数。 14什么时候使用属性,什么时候使用索引器?答:类中有成员变量就应当有属性。当成员变量是集合类型的时候,可以创建索引器。五程序阅读题1阅读下列程序,写出程序的输出结果。

22、 考察类对象public class TPoint int x, y; public void setpoint(int x1,int y1) x = x1; y = y1; public void dispoint() Console.WriteLine(点:(0,1), x, y); class Program static void Main(string args) TPoint p1, p2; p1= new TPoint(); p1.setpoint(2, 6); p2 = p1; p2.setpoint(8, 3); p1.dispoint(); p2.dispoint(); 点

23、:(8,3)点:(8,3)2阅读下列程序,写出程序的输出结果。考察方法参数传递class Program static void f1(ref int a, ref int 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); Console.WriteLine(x=0,y=1,xx=2,yy=3,

24、x,y,xx, yy); x=20,y=10,xx=30,yy=103阅读下列程序,写出程序的输出结果。考察索引器public class Weeks string week= Sun, Mon, Tues, Wed, Thurs, Fri, Sat ; public string thisint i get if (i = 0 & i= 0 & i 7) weeki = value; class Programstatic void Main() Weeks w = new Weeks(); w0 = 星期天; w1 = 星期一; Console.WriteLine(w2); Console

25、.WriteLine(w7); Tues星期天4阅读下列程序,写出程序的输出结果。考察委托使用delegate void mydelegate(double x, double y);class MyDeClass public void add(double x, double y) Console.WriteLine(0+1=2, x, y, x + y ); public void sub(double x, double y) Console.WriteLine(0-1=2, x, y, x - y); class Program static void Main(string arg

26、s) MyDeClass obj = new MyDeClass(); mydelegate p; p = obj.add; p += obj.sub; p(10, 20); 10+20=3010-20=-105阅读下列程序,写出程序的输出结果。考察委托使用public delegate int mydelegate(int x, int y); class Math public int fun1(int x, int y) return x * x + y * y; public int fun2(int x, int y) return x * x - y * y; class Prog

27、ram static void Main(string args) int result;mydelegate objCall; Math objMath = new Math(); objCall = objMath.fun1; result = objCall(5, 3); Console.WriteLine(结果为0, result); objCall = objMath.fun2; result = objCall(5, 3); Console.WriteLine(结果为0, result); Console.Read(); 结果为34结果为165. 阅读下列程序,写出程序的输出结果。

28、考察事件public delegate void mydelegate1(int i);class MyEvent public event mydelegate1 Event1; public void FireEvent1(int i) if (Event1 != null) Event1(i); public class Program public static void show(int i) Console.Write(0 , i); public static void Main() MyEvent a = new MyEvent(); a.Event1 += new mydel

29、egate1(show); for (int i = 0; i 0 ) Console.WriteLine(0+1i,a,b); else Console.WriteLine(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;x.DispCom();y.DispCom(); z.DispCom(); 1+2i3+4i4+6i六编程题1创建一个Stude

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服