抽象类和接口最大的区别:抽象类只需派生类实现它的抽象方法,而接口要求必须实现它的所有成员。接口的成员类型包含:方法、属性、事件、索引器。抽象类成员必须是共有的。
抽象类中可以定义属性和字段
一.选择题
1. 不可用作c#标识符的是:B 答案错误应该选择D
A.MyGame B.extend c._isYour D.2time
第一个字符必须是字母、下划线(_)或@,其他字符可以使用字母、数字或下划线。标识符不能和C#的关键字同名。C#中标识符是区分大小写的。
2.属于访问控制的关键字: D
A static:静态的 B sealed:密封类 C.abstact :抽象类 D.private:私有的访问修饰符
3.在C#下列说法哪个是正确的? B
A 创建对象Y一定要用new
B 字段可以是简单变量,也可以是一个对象
C 字段必须是简单变量
D 对象中必须有字段和方法
4.下列关于抽象类得说法哪个正确:C C#通过重写来实现抽象方法,实现抽象类方法是用override关键字来实现
A.某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法
B.接口和抽象类是同一回事
C.绝对不能用抽象类去创建对象和接口一样都不能直接实例化
D.抽象类中不可以有非抽象的方法 抽象类不一定只有抽象方法,还可以有普通方法,但是抽象类一定有抽象方法
5.关于被修饰符internal修饰的成员变量,以下说法正确的是:D
A.可以被三种类所引用:该类自身, 与它在同一个程序集中的其他类、在其他
B.可以被两种类访问和引用,该类本身,该类的所有
C.只能被该类自身所访问和修改
D. 只能被同一个程序集中的类访问内部访问。只限于本项目内访问,其他不能访问。
6.关于被私有访问控制符private修饰的成员变量,以下说法正确的是:C
A.可以被三种类所引用:该类自身、与它在同一个程序集中的其他类、在其他程序集中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改私有访问。只限于本类成员访问,子类,实例都不能访问
D.只能被同一个程序集中的类访问
7.关于被私有访问控制符protected修饰的成员变量,以下说法正确的是:B
A.可以被三种类所引用:该类自身、与它在同一个程序集中的其他类、在其他程序集中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类保护访问。只限于本类和子类访问,实例不能访问。
C.只能被该类自身所访问和修改
D.只能被同一个程序集中的类访问
8. .NET中关于类得说法正确的是:D
A.
B.构造函数不能是私有属性
C.析构函数可以定义参数
D.可以实现多个接口类可以实现多个接口中间用“,”隔开
9.C#语言中下列关于修饰符混用的说法,错误的是:D答案错误应选择B C
A.abstract不能与sealed并列修饰同一个类抽象类是通过派生类来实现抽象方法的而密封类不能继承那么就冲突了
B.abstract类中可以有private的成员抽象类不能具有私有成员
C.abstract方法必须在abstract类中或接口中抽象方法可以定义在接口中吗?只能定义在抽象类中
D.static方法中能直接处理非static的属性
10.接口是.Net面向对象的实现机制之一,以下说法正确的是:A答案错误应该选择B .NET不支持多重继承,继承具有单根性
A. .Net支持多重继承,一个类可以实现多个接口;
B. .Net只支持单重继承,一个类可以实现多个接口;正确
C. .Net只支持单重继承,一个类只可以实现一个接口;
D. .Net支持多重继承,但一个类只可以实现一个接口。
11、关于接口的定义和实现,以下描述正确的是( A )。
A.接口定义的方法只有定义没有实现
B.接口定义中的变量都必须写明final和static 接口中不能定义变量(字段)
C.如果一个接口由多个类来实现,则这些类在实现该接口中的方法时采用统一的代码
D.如果一个类实现接口,则必须实现该接口中的所有方法,但方法未必申明为public
12.以下定义一维数组的语句(C#中),正确的是:D答案错误全部错误D答案最接近正确定义数组
1: int[ ] a = new int[5]; 2: int []b=new []{1,4,3};
3: int[] c = new int[2] { 1,2}; 4. int [] d={1,2,3};
A. int a[5] B. int a[ ]=new [5];
C. int a[ ]; a[ ]=new int[5]; D. int a[ ]={1,2,3,4,5};
13.不属于值类型的是:C 值类型包括:简单类型、枚举类型、结构类型
A. 枚举类型 B.结构类型 C.string D 布尔类型
14.接口成员不包括:B答案错误应该选择D接口成员包括属性、方法、事件和索引器
A.方法 B.属性 C.索引 D.字段
15.下面代码编译运行后,结果是:D
public class Test
{
public static main (String args[])
{
int x;
Conslole.Write(“Value is “+ x);// Console.WriteLine("Value is " + x);关键字Conslole是错误的而且X未初始化
}
}
A.输出”value is 0” B.输出”Value is”
C.抛出异常 D.编译出错
16.
17.一般情况下,对.Net的异常处理语句try-catch-finally,以下描述正确的是:B
A.TRY后面是可能产生异常的代码,CATCH后面是捕获到某种异常对象时进行处理的代码,finally后面是没有捕获到异常时执行的代码。
B.TRY后面是可能产生的异常的代码,CATCH后面是捕获到某种异常代码对象时进行处理的代码,finally后面是无论是否捕获到异常都必须执行的代码。
C.CATCH语句和finally语句都可以却省。
D.CATCH语句用来处理程序运行时的非致命性错误,而finally语句用来处理程序运行时的致命性错误。
18.如果一个程序段中有多个catch,则程序会按如下哪种情况执行? C
A 找到合适的例外类型后继续执行后面的catch
B 找到每个符合条件的catch都执行一次
C 找到合适的例外类型后就不再执行后面的catch
D 对每个catch都执行一次
19.关于.Net中委托和事件,描述正确的是:C
A 委托是函数作为参数传递,传递函数参数可以与委托声明
B 一个事件只能触发一个委托
C 一个事件能触发多个委托
D 通过委托不能支持回调
20.以下C#程序中,那个语句有错误:B 接口中不能定义字段
Namespace net
{
1. public interface IBankAccount
{
2. public int account;
3. void payIn(decimal amount);
4. decimal balance {get;}
}
}
A 1 B 2 C 3 D4
21.下面的C#段中,执行之后str1.ToString()的结果,正确的是: C
StringBuilder str1 = new StringBuilder(“first”);
stringBuilder str2 = str1;
str2.append(“second”);//A应该大写Append()追加方法
A first B second C firstsecond D 以上都不对
22.ADO.Net中,执行数据库存储过程使用的方法:A
A ExecuteNonQuery B ExEcuteScalar C Fill D ExecuteReader
23. .Net中对XML的处理描述错误的是:A
A 可以使用MSXML进行处理
B 可以使用命名空间System.XML中的类进行处理
C 可以使用DOM和SAX两种方式进行处理
D 可以将一个Dom树的节点直接赋值给另一个
二判断改错
1. 在C#中,装箱操作是将值类型转化成引用类型.O
2. 枚举类型和结构类型属于值类型.0
3. C#语言从C和C++语言演化而来,C#中的类可以实现多个接口,从多个类继承.O错误一个派生类只能继承一个父类可以实现多个接口
4. 结构从基类Object继承,与类相同可以从类,接口继承.错误结构属于值类型不可以继承可以写方法当然可以实现接口。结构中只能定义有参构造函数,对数据字段不能赋值需要通过构造函数、属性以及方法赋值。结构类型数据可以是常量、变量、构造函数、方法和属性。可以理解为轻量级类。
5. C#的异常处理机制中,finally语句中的语句一定执行.O
6. 接口中的成员可以有字段,方法,属性,索引器,事件。X不可以有字段
7. 因为接口不能实例化,因此不能声明一个接口类型的变量。X
8. 抽象类不能被实例化,派生类必须实现定义的全部抽象类。X
9. Web用户控件和自定义控件一样,都是执行时动态编译的,可以添加到工具箱中。
10. 判断下面的C# Switch语句块是否正确 X
int i=0;
switch(i)
{
case 0 :
strResult = “condition:” + i.ToString();
default:
strResult = “condition: strResult”
}
语句块错误没有使用Break
正确应为
public string SwitckMenth(int i)
{
string str = string.Empty;
switch (i)
{
case 1:
str = "1";
break;
case 2:
str="2";
break;
case 3:
str = "3";
break;
default:
str = "Null";
break;
}
return str;
}
三简答题
1. 写一段代码,使用冒泡算法对一个整数数组a进行由大到小排序。
public void XXX(int[] a)
{
int temp;
for (int i = 0; i < a.Length; i++)
{
for (int j = i + 1; j < a.Length; j++)
{
if (A[i] < A[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
Console.WriteLine("/n该数组由大到小排序的结果是");
for (int i = 0; i < 5; i++)
{
Console.Write("{0} ", A[i]);
}
}
2. 以动物(Animal),猫(Cat),狗(Dog)为例,实现多态和继承,都叫(yelp)的动作,并给出应用的例子。(easy)
//定义抽¨象动物类
public abstract class Animal
{
public abstract void yelp();
}
//猫类继承抽象动物类
public class Cat : Animal
{
public override void yelp()
{
Console.WriteLine("猫¡§叫D的Ì?方¤?法¤¡§!ê?");
}
}
//狗猫类继承抽象动物类
public class Dog : Animal
{
public override void yelp()
{
Console.WriteLine("狗¡¤叫D的Ì?方¤?法¤¡§!ê?");
}
}
3. ADO.Net中访问数据的基本对象。
Connection 数据库连接对像
Command 数据库命令
DataReader 数据读取器
DataSet 数据集
4. 接口类和抽象类有什么区别?
答:声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
5. 依据Singleton设计模式,定义类SingleTonDemo
class Singleton
{
Protected Singleton(){}
private static volatile Singleton_ instance = null;
public static Singleton Instance()
{
if (_instance==null)
{
Lock(typeof(singleton))
{
If(_instance==null)
{
_instance = new Singleton();
}
}
}
}