C#成神之路<20> C#多态继承
2016-02-15 11:31
260 查看
1、继承
注意每一个程序的背后:
上述语句使我们能够继承Windows窗体的所有基本功能。而不需要亲自编写代码。
继承:背后的驱动力是简化代码的编写。是一种获得一个类,并且将该类扩展为适合一个相似然而不相同的目的。
基类:包含共同的属性。父类。
派生类:子类。
(1)protected访问说明符
需要protected的原因:基类和派生类之间形成了共生关系。
C#继承关系的访问说明符的变化和C++的解释一样。
protected说明符允许所有派生类具有对那些用基类中的protected访问说明符定义的属性和方法的访问权限。
(2)继承关系的优点
继承使得可以通过共享基类和派生类之间的属性和方法而编写较少的代码。
(3)C#中构造函数的继承
派生类不能继承构造函数,必须为每一个派生类编写一个构造函数,如果基类没有默认构造函数,那么派生类的构造函数必须用base关键字来调用基类构造函数。
(4)基类不是派生类
派生类使用基类中方法的能力是单向关系。派生类能够调用基类方法,但是基类不能调用派生类方法。
(5)抽象类定义
基类通常用来作为派生类之间共享的所有属性的存储库。
然而基类的描述性可能非常差。以至于实例化基类没有什么意义。为了防止基类实例化,需要使用abstract关键字。
利用abstract关键字方式定义类,有两个目的:
第一,他们不能实例化对象。
第二,用户必须定义派生类来捕获包含在基类中的功能。
如果用abstract定义了一个方法,派生类就必须实现该方法。基类中没有该方法的代码。这样抽象类和方法就类似于接口中也不包含代码的接口。然而接口不能包含构造函数。
(类似于C++当中的虚函数)
2、多态
定义:多态意味着可以向一群不同的类发送多条消息,每个类知道如何正确地对该消息做出响应。
(1)virtual关键字
单词virtual用来标识可能在派生类中被重写的方法。换句换说:virtual方法可以用从该类派生的任何类中该方法的不同定义中替换。
比如在基类中关于扫雪的方法:
在其基类的派生类中:
override关键字:override关键字与virtual关键字配合使用。override关键字告诉她,这个方法被他继承自的类中的方法重写了。
通常,派生类重写基类中定义的虚拟方法。
sealed关键字:防止从类中进一步继承。
继承和多态行为的优点:各个对象知道具体如何相应调用的时间或者方法。及时这些对象采用的是共同的方法名称。
整套系列文章,在本文就宣告结束。
然而C#仍然有非常庞大的功能等待去发掘。之后我会在本栏目继续补充相关C#知识。
与各位程序入门者共勉,向着成为一名技术高超的程序员的梦想不断前进。
注意每一个程序的背后:
public class frmMain:Form
上述语句使我们能够继承Windows窗体的所有基本功能。而不需要亲自编写代码。
继承:背后的驱动力是简化代码的编写。是一种获得一个类,并且将该类扩展为适合一个相似然而不相同的目的。
基类:包含共同的属性。父类。
派生类:子类。
(1)protected访问说明符
需要protected的原因:基类和派生类之间形成了共生关系。
C#继承关系的访问说明符的变化和C++的解释一样。
protected说明符允许所有派生类具有对那些用基类中的protected访问说明符定义的属性和方法的访问权限。
(2)继承关系的优点
继承使得可以通过共享基类和派生类之间的属性和方法而编写较少的代码。
(3)C#中构造函数的继承
派生类不能继承构造函数,必须为每一个派生类编写一个构造函数,如果基类没有默认构造函数,那么派生类的构造函数必须用base关键字来调用基类构造函数。
(4)基类不是派生类
派生类使用基类中方法的能力是单向关系。派生类能够调用基类方法,但是基类不能调用派生类方法。
(5)抽象类定义
基类通常用来作为派生类之间共享的所有属性的存储库。
然而基类的描述性可能非常差。以至于实例化基类没有什么意义。为了防止基类实例化,需要使用abstract关键字。
public abstract class clsDecidious { }
利用abstract关键字方式定义类,有两个目的:
第一,他们不能实例化对象。
第二,用户必须定义派生类来捕获包含在基类中的功能。
如果用abstract定义了一个方法,派生类就必须实现该方法。基类中没有该方法的代码。这样抽象类和方法就类似于接口中也不包含代码的接口。然而接口不能包含构造函数。
(类似于C++当中的虚函数)
2、多态
定义:多态意味着可以向一群不同的类发送多条消息,每个类知道如何正确地对该消息做出响应。
(1)virtual关键字
单词virtual用来标识可能在派生类中被重写的方法。换句换说:virtual方法可以用从该类派生的任何类中该方法的不同定义中替换。
比如在基类中关于扫雪的方法:
public virtual string RemoveSnow() { return whichType[buildType]+":No snow removal servicec available."; }
在其基类的派生类中:
public override string RemoveSnow() { return "Apartment:"; }
override关键字:override关键字与virtual关键字配合使用。override关键字告诉她,这个方法被他继承自的类中的方法重写了。
通常,派生类重写基类中定义的虚拟方法。
sealed关键字:防止从类中进一步继承。
public sealed clsLastClass { }
继承和多态行为的优点:各个对象知道具体如何相应调用的时间或者方法。及时这些对象采用的是共同的方法名称。
整套系列文章,在本文就宣告结束。
然而C#仍然有非常庞大的功能等待去发掘。之后我会在本栏目继续补充相关C#知识。
与各位程序入门者共勉,向着成为一名技术高超的程序员的梦想不断前进。
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- PostgreSQL教程(三):表的继承和分区表详解
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析