在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在面向对象中,有两种不同的继承类型:实现继承和接口继承。 1. 实现继承:表示一类型派生于一个基类型,拥有该基类型的所有成员字段和函数。在实现继承中,派生类型的每个函数蚕蛹基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承是备尝有效地。 a.声明:如果类也派生与接口,则用逗号分隔开基类和接口。 class A:B,Imyinterface { //实现代码 } b.虚方法:把一个基类函数声明为virtual,该函数就可以在派生类中重写了。也可把属性声明为virtual,但是要在定义上加virtual. private string foreName; public virtual string ForeName { get{return foreName}; set{foreName = value}; } 在c#中,函数在默认情况下不是虚拟的,但除了构造函数以外可以显示声明为virtual。在派生类的函数重写另一个函数时,要使用override关键字显式声明。 成员字段和静态函数都不能声明为virtual,因为这个概念只对类中的实例函数成员有意义。
c.隐藏方法 若签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual和override,派生类方法就会隐藏基类方法。 使用new 关键字声明我们要隐藏基类一个方法。
d.调用函数的基类版本: base.<MethodName>() 通过base 关键字访问基类的成员:
e.派生类的构造函数 派生类会有某些特殊问题的原因:在创建派生类的实例时,实际上有多个构造函数起作用。要实例化的类的构造函数本身不能初始化类,还必须调用基类中的构造函数。 构造函数的调用顺序是先调用System.Object,再按照层次结构由上而下进行,直到到达编译器要实例化的类为止。基类的构造函数总是最先调用,也就是说派生类的构造函数可以在执行过程中调用它可以访问的基类方法,属性和其他成员。因为基类已经构造出来,其字段也初始化了。
2.接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。接口继承常被看做提供了一种契约:让类型派生于接口,来保证为客户提供某个功能。
注:结构和类的区别:
3. 继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。类的继承中有四个访问修饰符: public protected internal private。使用这些访问修饰符可指定下列五个可访问性级别: public protected internal internal protected private。 public 访问不受限制。
4. 继承中关于属性的一些问题 和类的成员方法一样,我们也可以定义属性的重载、虚属性、抽象属性以及密封属性的概念。与类和方法一样,属性的修饰也应符合下列规则: 属性的重载
注意:与方法重载不同的是,属性的重载声明实际上并没有声明新的属性,而只是为已有的虚属性提供访问器的具体实现。 虚属性
抽象属性
密封属性
4.要注意的几点
参考:http://www.yesky.com/126/1717126_6.shtml |
请发表评论