文档介绍:面向对象面试题 1、简述 private 、 protected 、 public 、 internal 修饰符的访问权限。答. private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一程序集内可以访问。 2、 C# 中的委托是什么?事件是不是一种委托? 答:委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。事件是一种特殊的委托 3、 Override (重写) 与重载的区别答: 重载:同类同名不同参,属于编译时多态。重载是在一个类中定义多个方法名相同的方法,表示一个行为有多种实现方式重写:同名同参不同类,属于运行时多态。重写是用子类的方法来重写父类的方法,表示相同的方法在父类和子类中具有差异性 4、描述一下 C# 中索引器的实现过程,是否只能根据数字进行索引? 答: public 类型 this[ 检索条件] { get { // 根据检索条件取值} set { // 根据检索条件赋值}} 索引器是用来封装类中的数组或集合的成员。索引器的参数表示检索成员的条件, 没有参数类型的限制,但是参数个数至少有 1个 5、什么是装箱和拆箱? 答:从值类型转换到引用类型装箱。从引用类型转换到值类型拆箱 6、请详述在 中类(class) 与结构(struct) 的异同? 答: Class 可以被实例化, 属于引用类型, 是分配在内存的堆上的,Struct 属于值类型, 、结构的成员不能赋初值, 类可以 2、结构不能有继承,但可以实现接口,类都可以 3、结构不能有空构造函数,类可以 4、结构可以定义带参的构函数,负责初始化所有的成员字段 7、接口是否可继承接口? 抽象类是否可实现(implements) 接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements) 接口, 8、构造方法是否可被重写? 答: 构造方法不能被继承,因此不能重写 Overriding ,但可以被重载。 9、是否可以继承 String 类? 答: String 是密封类 sealed 10、在C #中, string str = null 与 string str = “”请尽量使用文字或图象说明其中的区别。答: string str= null 是不给他分配内存空间,而 string str= "" 给它分配长度为空字符串的内存空间。 11、堆和栈的区别? 答:栈: 由编译器自动分配、释放。在函数体中定义的变量通常在栈上。按照先进后出的原则堆:适合存放大量的数据,使用地址的方式访问数据 12、成员变量和成员函数前加 static 的作用? 称为静态成员,类中所有成员都公用一个静态成员,只能通过类来访问 13、什么是虚方法?什么是抽象方法? 答:虚函数:没有实现的,可由子类继承并重写的函数。抽象方法: 在抽象类中定义的方法,没有方法体, 规定其非虚子类必须实现的函数,必须被重写。 14、当整数 a 赋值给一个 object 对象时,整数 a 将会被? 答:装箱 15、类成员有_____ 种可访问形式? 答:1、非静态成员: 在类的内部