C# 子类实例化基类 基类使用不了子类的方法_c#面试知识点整理2

一、派生类调用构造函数的顺序是:先初始化实例成员,然后调用基类的构造函数,最后调用派生类构造函数。

二、抽象类的存在只有一个目的,就是被继承。抽象类不能实例化,用abstract修饰,抽象类可以包含抽象成员和普通成员,以及他们的任意组合;抽象类的抽象成员在派生类中需要用override关键字实现。

三、声明为sealed的类是密闭类,声明为sealed的方法是密闭方法。密闭类是指有些类不希望其他人通过继承来修改,密闭方法是指不希望其他人重写该方法。如果一个基类方法不希望子类对其重写,就可以不声明为virtual。如果是某个派生类方法不希望子类对其重写,同时是override重写,就可以使用sealed机制。

四、接口就是指定一组函数成员,而不实现他们的引用类型,只能用来被实现。关键字为interface,所有函数成员都是默认public不能加任何访问修饰符。一个类可以实现多个接口。

五、结构和类的不同点:结构是值类型(在栈中),类是引用类型(在堆中);结构不支持继承,类支持继承;结构不能定义默认构造函数,编译器会定义。结构:由于内存分配快,作用域结束即被删除,不需要垃圾回收,用于小型数据结构,但传点过程中会复制,应该用ref提高效率。

六、静态类及静态成员。静态成员将被类的所有实例共享,所有实例都访问同一个内存地址。静态成员将直接通过类名访问。静态成员的生存周期:独立于任何实例,没有实例也可以访问。其初始化语句在任何静态成员使用之前调用。静态函数不能访问实例成员,仅能访问其他的静态成员。静态构造函数用于初始化静态字段。在引用任何静态成员之前,和创建任何实例之前调用;与类同名,使用static,无参数,无访问修饰符。如果类只包含了静态的方法和属性,并且表示为static那么就是静态类。静态类不能创建实例,不能继承,可以为静态类定义一个静态构造函数。静态类主要用于基础类库(如Math)和扩展方法。

七、装箱:根据值类型的值,在堆上创建一个完整的引用类型对象,并返回对象的引用,是一种隐式转换。有时候需要将值类型转换为引用类型来进行统一的操作和统一的存储就需要用到装箱。装箱的本质就是在堆上创建引用类型的副本,新创建的引用类型和原来的值类型相互独立。拆箱:将装箱后的对象转换回值类型的过程,是一种显示转换。

八、动态数组ArrayList:初始化可以不指定大小;获取长度使用Count属性,添加用Add,删除用Remove,RomoveAt,访问[index]。ArrayList是类型不安全的,而且有装箱拆箱的性能问题。栈是先进后出,后进先出的一种容器。入栈使用push,出栈使用pop。队列是先进先出的容器,入队Dequeue,出队Enqueue。

九、委托就是持有一个或者多个方法的对象!并且该对象可以执行,可以传递。关键词为delegate。

C# 子类实例化基类 基类使用不了子类的方法_c#面试知识点整理2_第1张图片

你可能感兴趣的:(C#,子类实例化基类,基类使用不了子类的方法)