C#简单的面试题目(一)
1.简述private、protected、public、internal修饰符的访问权限。
private:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
public:公共成员,完全公开,没有访问限制。
internal:在同一个程序集内可以访问.----@无机の剑执政的, 多谢博友
2.private 私有成员会被继承吗?
会,但是不能访问。所以看上去他们似乎是不能继承的,但实际上确实被继承了。
3.C#支持多重继承吗?不支持,但是可以用接口来实现。
4.C#中所有对象共同的基类是什么?Systm.Object。
5.什么是面向对象?
万物都是对象,其主要特征:封装、继承、多态
6.怎样实现多态
1.通过对象直接调用成员函数时,始终默认使用该对象的类的成员函数(除非用::显示指定类名)
2.通过指向对象的指针或引用调用成员函数时,如果该函数是实函数,则调用该指针或引用的类的成员函数;如果该函数是虚函数,则调用该指针或引用指向的对象的类的成员函数。
7.什么是装箱和拆箱?
从值类型接口转换到引用类型为装箱。从引用类型转换到值类型为拆箱。
装箱(boxing)是将值类型转换成引用类型,int i=3;object o=i;这便是装箱过程。
而拆箱(unboxing)是将引用类型数据转换成值类型,int j=(int)o;
8.什么是Interface?它与Abstract Class有什么区别?
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类
9.什么时候使用抽象类,什么时候用接口
接口用于规范,抽象类用于共性。接口中只能声明方法、属性、事件、索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象了可以提供某些方法的部分实现,接口不可以。抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。在抽象类中假如一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的、或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
11.什么是抽象类(Abstract Class)?
一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可以有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。
12.何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
13.为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为共有方法。
14.如果接口中存在重复的方法名称该如何?
这种情况中你可以决定如何实现,当然需要特别的小心。但是在编译环节是没有问题的。
15.C#接口和类有什么异同。
异:
不能直接实例化接口。
接口不包含方法的实现。
接口、类和结构可从多个接口继承。但是C#只支持单继承:类只能从一个基类继承实现。
类定义可在不同的源文件之间进行拆分。
同:
接口、类和结构可从多个接口继承。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
接口可以包含事件、索引器、方法和属性。
一个类可以实现多个接口。