C#继承
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
一、继承的类型 ![]() ![]() ![]() ![]() 类派生于接口,则用都好分隔。 2.1 虚方法 在C#中可以把在方法或者属性的前面加上virtual,声明基类的方法为虚方法或者虚属性,虚方法和虚属性的规则相同。语法如下: ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注意:成员字段和静态函数不能被声明为virtual,因为这个概念只对类中的实例函数成员有意义。 2.2 隐藏方法 如果在基类和派生类中都声明了签名相同的方法,而基类中的方法又没有声明为virtual,派生类中的方法也没有声明成override,则派生类方法就会隐藏基类方法。结果是调用哪个类的方法取决于引用实例的变量类型,而不是实例本身的类型。 2.3 调用函数的基本版本 C#有一种特殊的语法用于从派生类中调用方法的基本版本:base.<MethodName>()。 2.4 抽象类和抽象函数 C#中的抽象类要声明为abstract,抽象类不能实例化,抽象函数没有执行代码,必须在非抽象的派生类中重写。显然抽象函数也是虚拟的,但不需要提供virtual关键字,而用abstract关键字。如果类包含了抽象函数,那么该类也是抽象的,类必须用abstract声明。 ![]() ![]() ![]() ![]() C#允许把类和方法声明为sealed,对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。 ![]() ![]() ![]() 在创建派生类的实例时,实际上会有多个构造函数在起作用。实例化类的构造函数本身不能初始化类,还必须调用基类中的构造函数。即派生类的实例构造是按层次结构进行的,顺序是先执行基类的构造函数,再执行派生类的构造函数。 基类的构造函数总是最先调用,那么派生类的构造函数可以在执行的过程中调用基类的方法、属性和其他成员,因为基类已经构造出来了,其他字段也初始化了。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() C#中完整的修饰符列表:
四、接口 接口中只能包含方法、属性、索引器和事件的声明。接口不能实例化,不能有构造函数或字段,也不包含运算符重载。接口定义中还不允许声明成员的修饰符,成员接口总是public的,不能声明成virtual或者static 4.1 接口的定义和实现 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 接口可以继承,其方式与类的继承相同。 该文章在 2017/2/7 18:52:32 编辑过 |
关键字查询
相关文章
正在查询... |