int x=a[i]; a[i]=a[k]; a[k]=x; }
14 16 18
10. 写出以下程序运行结果。 using System; class Test {
public static void Main () {
int s=0;
for (int i=1; ; i++) { if (s>50) break; if (i%2==0) s+=i; }
Console.writeLine (\s=\+ i + \+ s); } }
答案:i,s = 15, 56
五、简答题(10分,每题5分)
1.如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序
2.C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出并指出它们之间的区别是什么?
答:
public 可以被任意存取
protected只可以被本类和其继承子类存取
internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。
protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。
private只可以被本类所存取。
3.接口和抽象类的区别是什么?
答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
4.什么是抽象类?
答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实例化。
基于C#的OOP技术课程 复习题
一、 判断题(本大题共10个小题,每小题1分,共10分)
1. 在同一行上可以书写多条语句,每条语句间用分号分隔。(t )
2. 在数据类型转化时,只能通过类型转换关键字或Convert类实现。(f ) 3. 接口与类同样是面向对象程序设计的核心,是创建对象的模版。(F ) 4. 委托是将方法作为参数传递给另一方法的一种数据类型。事件与委托没有
关系。(F )
5. 可以重写私有的虚方法。(T )
6. 使用Directory类的Move()方法可以删除文件。(T ) 7. 不能指定接口中方法的修饰符。(T )
8. 在定义数组时不允许为数组中的元素赋值。(F )
9. 接口与类同样是面向对象程序设计的核心,是创建对象的模版。( ) 10.如果要实现重写,在基类的方法中必须使用virtual关键字,在派生类的
方法中必须使用overrides关键字。(T )
11.在C#中,所有类都是直接或间接地继承System.Object类而得来的。(T
)
12.在C#中,任何方法都不能实现多继承。(F ) 13.在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。(F
)
14.可以阻止某一个类被其他类继承。(T )
15.使用FileInfo类的Copy()方法可以复制文件。(T )
二、选择题(本大题共20个小题,每小题2分,共40分) 1. 在 C#中,表示一个字符串的变量应使用以下哪条语句定义? B
A.CString str; B.string str;
C.Dim str as string D.char * str;
2. C#中 MyClass 为一自定义类,其中有以下方法定义:A
public void Hello(){?}
使用以下语句创 建了该类的对象,并使变量 obj 引用该对象,那么,访问类MyClass的Hello方法正确的是:
MyClass obj = new MyClass(); A.obj.Hello(); B.obj::Hello(); C.MyClass.Hello(); D.MyClass::Hello();
3. 分析下列程序中类 MyClass 的定义 D
class BaseClass { public int i; } class MyClass:BaseClass { public new int i;}
则下列语句在 Console 上的输出为_______. MyClass y = new MyClass(); BaseClass x = y; x.i = 100;
Console.WriteLine(\提示:注意类 MyClass 中的 new 关键字)
A.0, 0
B.100, 100 C.0, 100 D.100, 0
4. 在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以
处理不同的派生类的需要,则应将该方法声明成_C___? A.sealed 方法 B.public 方法 C.virtual 方法 D.override 方法