C面向对象编程习题_第1页
C面向对象编程习题_第2页
C面向对象编程习题_第3页
C面向对象编程习题_第4页
C面向对象编程习题_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#0向对象编程-多态1 . c#中的方法重写使用关键字()。a) overrideb) overloadc) staticd) inherit2 .以下的C#弋码,试图用来定义一个接口:public interface IFileint A;int delFile() A = 3;void disFile();关于以上的代码,以下描述错误的是() 。 (选择一项)a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以 int A 代码行将出现错误b) 以上的代码中存在的错误包括:接口方法delFile 是不允许实现的,所以不能编写具体的实现函数c) 代码void disFile();定

2、义无错误,接口可以没有返回值d) 代码void disFile();应该编写为void disFile();3 .在C#中,接口与抽象基类的区别在于()。a) 抽象基类可以包含非抽象方法,而接口只能包含抽象方法b) 抽象基类可以被实例化,而接口不能被实例化c) 抽象基类不能被实例化,而接口可以被实例化d) 抽象基类就是接口,它们之间无差别4 在开发某图书馆的图书信息管理系统的过程中,开始为教材类图书建立一个TextBook类;现在又增加了杂志类图书,于是需要改变设计,则下面最好的设计应该是()。a) 建立一个新的杂志类Journal 。b) 建立一个新的杂志类Journal ,并继承TextB

3、oook 类。c) 建立一个基类Book 和一个新的杂志类 Journal ,并让 Journal 类和 TextBoook 类都继承于Book类。d) 不建立任何类,把杂志图书的某些特殊属性加到 TextBoook 类中。5可以使用()关键字重写方法。a) Overrideb) New6 ()可以看作类的模具。A. 抽象类B. 接口C. 虚方法7以下叙述正确的是:()A 接口中可以有虚方法。 B. 一个类可以实现多个接口。C 接口不能被实例化。 D. 接口中可以包含已实现的方法。8. 下列代码输出为( ):class Fatherpublic void F() Console.WriteLi

4、ne("A.F"); public virtual void G() Console.WriteLine("A.G"); class Son: Fathernew public void F() Console.WriteLine("B.F"); public override void G() Console.WriteLine("B.G"); class override_newstatic void Main() Son b = new Son();Father a = b;a.F();b.F();a.G()

5、;b.G();A. A.FB.FA.GB.GB. A.FB.FB.GB.GC. A.FA.FB.GB.GD. B.FB.FB.GB.G9写出程序的输出结果:public class Apublic virtual void Fun1(int i)Console.WriteLine(i);public void Fun2(A a)a.Fun1(1);Fun1(5);public class B:A public override void Fun1(int i)base.Fun1(i+1);public static void Main()B b=new B();A a=new A();a.Fu

6、n2(b);b.Fun2(a);后跟继承的接口的名字,多个10 .在C#中,允许多接口继承,从多个接口时,使用":接口名称之间使用()符号进行分割。 (选择一项)a) ”b)”-> ”c) ”d)”11 .在.NET中,关于组件多态性的陈述,下面除了()都是正确的。(选择一项)a 可以通过接口实现多态性b 可以通过抽象类实现多态性c 多态性不只是重载或重写,而是智能重写d 在多态性中,需要调用哪个方法的决定是在设计时做出的12 多态性允许对类的某个方法进行调用而无需考虑该方法所提供的特定实现, 例如, 可能有名为了 Road 的类,它调用另一个类的 Drive 方法,另一个类可

7、能是SportsCar 或SmallCar,但二者都提供Drive 方法,虽然Drive 方法的实现因类的不同而异,但Road 类仍可以调用它,并且它提供的结果可由 Road 类使用和解释。在.NET 中,可以由以下的方式来实现组件中多态性,除了() 。 (选择一项)a) 通过接口实现多态性b) 通过多个不同的子类从单个基类继承实现多态c) 通过抽象类实现多态性d) 通过受保护的成员函数来实现多态性13 .阅读以下的C#(弋码:class Apublic abstract void printStr(string str)Console.WriteLine(str);class B:Apubl

8、ic override void printStr(string str)str=str+"( 重写的方法)"Console.WriteLine(str);class DefaultInitializerApppublic static void Main()B b=new B();A a=b;a.printStr("打印 ");b.printStr("打印 ");Console.ReadLine();运行程序后将在控制台窗口打印 ( ) 。 ( 选择一项 )a. 打印 重写的方法b. 打印 打印 重写的方法c. 打印d. 程序有误,

9、不能运行14 .在C#勺语法中,()关键字可以实现在派生类中对基类的虚函数进行重载(选一项) a> overrideb> newc> staticd> virtual15对下面的 C # 程序 :using System;public interface IAccountvoid PosInterest();void DeductFees( int feeSchedule);class BusinessAccount : IAccountint A;public static void Main()BusinessAccount B = new BusinessAcco

10、unt();Console.WriteLine(B.A);Console.ReadLine();public void IAccount.PostInterest() A = A+1; public void IAccount.DeductFees( int feeSchedule) A = A + feeSchedule;以下的说法正确的是( )( 选择一项 )A.a) 程序将出现编译错误, 指示不能在实现接口 BusinessAccount 的类中定义成员b) 程序将出现编译错误, 指示Public 关键字对接口项无效c) 程序编译正常, 但是出现运行时错误, 指示变量 A 没有初始化d)

11、 程序将正常运行, 输出为 016. 可以使用()关键字重写方法。A. OverrideB. new17. ()可以看作类的模具。A. 抽象类B. 接口C. 虚方法18. 请问,此程序输出结果是()abstract class BaseClasspublic virtual void MethodA()Console.WriteLine("BaseClass");public virtual void MethodB()class Class1: BaseClasspublic void MethodA()Console.WriteLine("Class1&quo

12、t;);public override void MethodB()class Class2: Class1new public void MethodB()class MainClasspublic static void Main(string args)Class2 o = new Class2();o.MethodA(); A. BaseClassB. BassClass Class1C. Class1D. Class1 BassClass19. 请问,此程序输出结果是()public abstract class A public A() Console.WriteLine('

13、;A'); public virtual void Fun() Console.WriteLine("A.Fun()"); public class B: A public B() Console.WriteLine('B'); public new void Fun() Console.WriteLine("B.Fun()"); public static void Main() A a = new B();a.Fun(); A. A B A.Fun()B. A B B.Fun()C. B A A.Fun()D. B A B.F

14、un()20. 以下叙述正确的是() :A. 接口中可以有虚方法。B. 一个类可以实现多个接口。C. 接口不能被实例化。D. 接口中可以包含已实现的方法。21. 以下关于C#弋码的说法正确的是()。(选择一项) Public abstract AnimalPublic abstract void Eat();Public void Sleep()a. 该段代码正确b. 代码错误,因为类中存在非抽象方法c. 代码错误,因为类中的方法没有实现d. 通过代码“ Animal an = new Animal(); ”可以创建一个Animal 对象22. 在c#中,关于继承和接口,以下说法正确的是()(

15、单选)a. c# 允许许多接口实现, 也允许多重继承b.c# 允许多接口实现,但不允许多重继承c.c# 不允许多接口实现,但允许多重继承d.c# 不允许多重接口实现,也不允许多重继承23)在C抻,已知下列代码的运行结果是“老虎吃动物” ,请问在空白处1和空白处2分别应该填写的代码是()Public class AnimalPublic 空白处 1 void Eat()Consone.WriteLine( “我要吃” ) ;Public class Tiger:AnimalPublic 空白处 2 void Eat()Consone.WriteLine( “老虎吃动物” ) ;Public ca

16、lssTestStatic void Main()Animal an = new Tiger();an.Eat;a) Virtual , newb) override , virtualc) virtual , overrided) new , virtual24)在C抻,下列关于抽象类和接口的说法,正确的是) ()(选择一项)a) 在抽象类中,所以的方法都是抽象方法b) 继承自抽象类的子类必须实现起父类(抽象类)中的所以抽象方法c) 在接口中,可以有方法实现,在抽象类中不能有方法实现d) 一个类可以从多个接口继承,也可以从多个抽象类继承25)关于以下C#弋码的说法正确的是()Public a

17、bstract class AnimalPublic abstract void Eat();Public class Tiger:AnimalPublic override void Eat()Console.WriteLine( “老虎吃动物” );Public class Tigress:TigerStatic void main()Tigress tiger=new Tigress(); Tiger.Eat();a) 代码正确, 但没有输出b) 代码正确, 并且输出为”老虎吃动物”;c) 代码错误 , 因为 Tigress 类没有实现抽象基类Animal 中的抽象方法d) 代码错误 ,

18、 因为抽象基类Animal 的 Eat 方法没有实现26) 在 c# 中 某程序员定义了一个IDataBase 接口,以及实现该接口的类 CDataBase , 下列关于该段代码说法正确的是()(选择一项)public interface IDataBase void OpenTable( string tableName);void UpDataTable( string tableName); public class CDataBase:IDataBase public void OpenTable( string tableName) Console.WriteLine("

19、打开数据表");public void UpdataTable( string tableName) Console.WriteLine(" 更新数据表");static void Main() CDataBase db = new CDataBase(); db.OpenTable("Customers"); a) 该段代码错误,因为在定义接口时,接口中的方法没有提供实现b)该段代码错误,因为接口中声明的方法不是公有的,应此在CDataBase类中不能访问接口中的方法c) 该段代码正确, 同时由于客户没有调用 UpdataTable 方法,

20、可以把 CDataTable 类中的 UpdataTable 去掉, 代码仍然正确d) 该段代码正确,但是如果在IDataBase 接口中声明一个方法void Execute(string sql); 则必须在CDataBase 中实现该方法27.C# 中 下列代码运行结果是()(选择一项)public class Studentpublic virtual void Exam() Console.WriteLine(" 学生都要考试 ");public class Undergraduate:Studentpublic new void Exam()base.Exam()

21、;Console.WriteLine(" 大学生有选择考试科目的权利 "); public class Teststatic void Main() Student stu = newUndergraduate();stu.Exam();a) 学生都要考试b) 大学生有选择考试科目的权利c) 大学生都要考试大学生有选择考试科目的权利d) 学生都要考试学生都要考试28) c#中 下列代码的运行结果是()(选择一项)struct Studentpublic int age;public string name;public Student( int age, string na

22、me) this .age=age;this .name=name;public class Teststatic void Mian()Student stu1=new Student(18,"小方 ");Student stu2=new Student(24,"小刚 ");stu2=stu1;stu1.age=30;=" 小燕 "Console.WriteLine(stu2.age);Console.WriteLine();a)18小方b)18小燕c)30小燕d)30小方29)在C抻,下列()关键

23、字用于重写基类的虚拟方法。(选择一项)a)overrideb)newc)based)virtual委托和事件C的向对象编程-委托和事件 1.阅读以下C#(弋码Namespace tevent public class delegate void notify5(); eventTestpublic void Raise5(int I)Got5();if(I%3=1)publicclassevent notify5Handlerspublic static voidConsole.WriteLine("class class10Got5;Method1()时间处理完成");s

24、tatic void Main(String args)eventTest eObj=new eventTest();eObj.Got5+=new notify5(Handlers.Method1);for(int cnt=0;cnt<5;cnt+)int y=cnt*2+1;eObj.Raise5(y);Console.WriteLine();代码允许的结果为()A)控制台窗口不能出任何信息。B)在控制台窗口输出C)在控制台窗口输出D)在控制台窗口输出2. 声明一个委托public方法的原型应该是()A. void myCallBack(int“时间处理完成“时间处理完成“时间处理完成

25、delegateint1次2次5次myCallBack(int x);则用该委托产生的回调x)B. int receive(int num)C. string receive(int x)D. 不确定的3 .C# 中,关于事件的定义正确的是()。a)private event OnClick();b)private event OnClick;c)publicdelegatevoidClick();publiceventClickvoid OnClick();d)publicdelegatevoidClick();publiceventClickOnClick4 .在C抻,下列代码的运行结果是

26、().Public delegate void BuyTicketDelegate(string num); Public class StudentPublic event BuyTicketDelegate btEvent;Public Student(string num) btEvent+= new BuyTicketDelegate(this.BuyTicket); Public void ShowNum(string num) btEvent(num);Private void BuyTicket(string num) Console.WriteLine("我要买&qu

27、ot;+num+'次车票”); Static void Main() Console.WriteLine( “创建学生对象” ); Student stu = new Student( “ TI ” ); Console.WriteLine( “创建完毕” ); Stu.ShowNum( “TI ” ); a)创建学生对象创建完毕b) 创建学生对象我要买TI 次车票创建完毕c) 创建学生对象创建完毕我要买 TI 次车票d) 我要买 TI 次车票创建学生对象创建完毕C#0向对象编程-封装1. c黜言使用()来引入名称空间。a) Importb) Usingc) Included) Lib

28、2在.NET 中, 以下关于命名空间的描述 , 正确的是 ().( 选择一项 )a) 命名空间不可以进行嵌套b) 在一个 .cs 文件中 , 只能存在一个命名空间c) 使用 private 修饰的命名空间 , 其内部的类也不允许访问d) 命名空间使得代码更加有条理、结构更清晰3 .在C腔中()选一项a) 允许有多个相同名称的构造函数b) 允许有多个不同名称的构造函数c) 至少要有一个构造函数d) 只能有一个构造函数4 .在C#中,可以直接在名称空间内声明如下类型,除了()A)数组B)接口C)结构 D)委托5 . C蝌序中的类 myClass中的成员变量 van如下: public class

29、myClass private int varl ; 则可以访问 var1 的有() 。 (选择一项)a) myClass 中包含的类b) myClass 的继承类c) myClass 的父类d) 和 myClass 在同一命名空间下的类6 下列关于类方法的声明,正确的是()(选择两项)a) 方法定义类所许可的行动b) 从一个类创建的所有对象可以使用同一组属性和方法c) 每个方法应该有一个参数d) 如果在不同类中定义了类似的操作,刚他们的行为不应该是类似的7析构函数的语法是()semester() / 析构函数的实现A. 对B. 错8. C联中的构造函数的特点是()选一项a) 一个类中,只能有

30、一个构造函数b) 构造函数的名称与类名一样c) 构造函数在对象销毁时自动执行d) 要求构造函数至少有两个参数9. 针对以下C#(弋码Using System;Public class TeacherPublic string teacherName;Public string teacherSubject;Public Teacher(String name)This.teacherName=name;Public Teacher(String subject) This.teacherSubject = subject;Public Teacher(String name, String s

31、ubject)This.teacherName=name;This.teacherSubject = subject;以下说法正确的是() (选择一项)A)上述代码编译无错误,类中存在三个构造函数B)上述代码编译有错误,因为类中只能有一个构造函数C)上述代码编译有错误,因为类中有两个具有相同参数类型的构造函数 D)上述代码编译有错误,以为类中没有不带参数的构造函数10. 阅读以下的C#弋码:Namespace t3_6Namespace Ford Public class MustangIn namespace Ford ” );Public void printMust()Console.W

32、ritleLine(class Class1static void Main(string args) Mustang must1=new Mustang();must1.printMust();Console.ReadLine();代码运行结果为 (D) 。 ( 选择一项 )a. 什么都不显示b. 在控制台打印”In namespace Ford ”,用户输入任何数据退出c. 在控制台打印”In namespace Ford ”,立即退出d. 提示代码有错误,不能执行11. 以下的C#弋码段,使用了 using别名指令:Using T(1) A.B.C; /A.B.C 为某类的完全限定名Cl

33、ass MyClassStatic void Main() T M=new T();则代码段中( 1)处应填写的操作符或者关键字() (选一项)a> Asb> =c> =d> Instead12. C黜言使用()来引入名称空间。a) Importb) Usingc) Included) Lib13. () 关键字是类型和类型成员的访问修饰符。 (D) 内部成员只有在同一程序集中的文件内才是可访问的。A. public B.private C.protected D.internal E.sealed14. 下列哪些说法是错误的 ()A. 抽象类可以实例化。B. 不可以改变常量的值.C. 可以使用 this 引用静态方法或属性访问器.D. readonly 变量只能在构造函数中赋值.E. 一个父类的 private 成员可以在子类中直接调用 .15. 请问, Class1.Count 的值是多少? ()class Class1public static int Count = 0;static Class1()Count+;public Class1()Count+;public static void Main()Class1 o1 = new Class1();/1Class1 o2 = new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论