1、什么是装箱和拆箱?
装箱是从值类型到引用类型的隐式转换;
拆箱是从引用类型到值类型的显示转换;
2、什么是重载和重写
Overload:重载就是在同一个类中,方法名相同,参数列表不同。参数列表不同包括:参数的个数不同,参数类型不同等。
override:说的是两个类继承,子类重写父类的方法,在调用的时候,子类的方法会覆盖父类的方法,也就是会调用子类的方法。在父类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。
3、说说抽象方法和虚方法的相同点与不同点。
抽象方法是只有定义,没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;
虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。
4、接口和抽象类的区别是什么?
接口中只能声明方法,属性,事件,索引器。不能包含字段、构造函数、析构函数、静态成员或常量。
抽象类中可以有方法的实现,也可以定义非静态的类变量。
抽象类只能被单继承,接口可以实现多个。
抽象类可以提供某些方法的部分实现,接口不可以。
抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
抽象类中加入一个方法,抽象类的子类就同时有了这个方法。
接口中加入新的方法,实现该接口的类需要重新编写。
接口成员被定义为公共的。
抽象类的成员可以是私有的、受保护的、内部的或受保护的内部成员。
接口用于规范。抽象类用于共性。
5、C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出三种并指出它们之间的区别是什么?
public 可以被任意存取
protected只可以被本类和其继承子类存取
internal只可以被本程序集内所有的类存取,其编译后的文件扩展名往往是“.DLL”或“.EXE”。
protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。
private只可以被本类所存取。
6、类和对象的区别和关系是什么?
类是对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。
类是对象的模板,对象是类的实例
7、静态字段和非静态字段的区别?
静态字段使用static 修饰;非静态不用。
静态字段属于类,为所有对象共用;非静态字段属于对象,为对象专用。
静态字段使用类名来访问;非静态字段使用对象来访问。
8、抽象方法和虚方法的区别?
抽象方法使用abstract修饰,只有定义,没有方法体实现,只能出现在抽象类中,子类必须重写;
虚方法使用virtual修饰,有方法体实现,允许子类重写或覆盖。
9、如何区别重载方法?
在一个类中,方法名字相同,参数不同;包括不同的参数个数,不同的参数类型,不同的参数顺序
10、构造方法有哪些特征?
(1)函数名与类名相同;
(2)没有返回值类型;
(3)系统自动调用
11、简述变量的命名规则
由数字、字母和下划线组成,不能以数字开头,不能是关键字。
12、什么是抽象类和密封类(最好简述一下它们都有什么特点)
抽象类用abstract修饰,能够包含抽象成员。抽象类不能直接实例化,也不能被密封,只能作为其它类的基类。
密封类用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。
13、解释virtual、sealed、override和abstract的区别
virtual声明虚方法的关键字,说明该方法可以被重写;
sealed说明该类不可被继承;
override重写基类的方法;
abstract声明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。