Visual C# 2005程序设计基础教程ch08

Visual C# 2005程序设计基础教程ch08

ID:42825516

大小:259.00 KB

页数:22页

时间:2019-09-23

Visual C# 2005程序设计基础教程ch08_第1页
Visual C# 2005程序设计基础教程ch08_第2页
Visual C# 2005程序设计基础教程ch08_第3页
Visual C# 2005程序设计基础教程ch08_第4页
Visual C# 2005程序设计基础教程ch08_第5页
资源描述:

《Visual C# 2005程序设计基础教程ch08》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第8章继承与多态本章要点:继承的概念C#中的继承机制虚方法与override关键字多态性8.1什么是继承一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承是用已有的类来建立专用类的编程技术。派生类继承了基类的所有特性与功能,并可以对成员作必要的增加或调整。一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。一个派生类有且只能有一个基类,即C#不支持多

2、重继承机制。同时基类与派生类也是一个成对的概念,一个孤立的类即不可能是基类也不可能是派生类。8.2使用继承机制8.2.1基类和派生类C#中继承的语法格式如下:[访问修饰符]class<派生类名称>:<基类名称>C#语言的继承机制除了要遵守上述语法规范外,还有如下规则:派生类应当被看作是基类所具有的特性与功能的继承与扩展,而不是简单的派生类“大于”基类;派生类不能“选择性”的继承基类的属性与方法,必须继承基类的所有特性与方法;派生类可以在继承基类的基础上自由定义自己特有的成员;基类的构造方法与析构方法不能被派生类继承,除此之外的其他成员都

3、能被继承,基类成员的访问方式不影响他们成为派生类的成员;派生类中继承的基类成员和基类中的成员只是相同,并非同一个成员。8.2使用继承机制8.2.2base关键字与在派生类中访问基类成员继承机制并不能使派生类具有基类的构造方法与析构方法,要想通过访问基类的构造方法为派生类中的基类子对象进行初始化则需要通过base关键字。在派生类中使用base关键字即可指代当前类的父类,但只限于构造函数、实例方法和实例属性访问器中使用,如:publicvoidGetInfo(){//利用base关键字调用基类Person的Display方法base.Dis

4、play();Console.WriteLine("ID:{0}",this.id);}8.2使用继承机制8.2.3方法的继承与virtual、override及new关键字使用virtual关键字修饰的方法称为是虚方法,在一个类中如果某个方法需要被派生类继承,并且需要在派生类中修改方法的内容时可将该方法定义为虚方法。在派生类中如果需要重写该方法,可在派生类中定义同名的方法,其前加上override关键字修饰。在派生类中对虚方法使用override修饰后,基类中的该方法在派生类中将被屏蔽,不会存在两个Display方法从而构成重载关系。

5、如果没有virtual及override关键字分别对基类和派生类中的同名方法进行修饰同样也能输出正确的结果,但编译器给出一个警告,为了能在派生类中定义与基类同名的方法同时新方法又能具有不同的功能,C#引入了new关键字8.2使用继承机制8.2.3方法的继承与virtual、override及new关键字new关键字用来修饰一个方法,即在派生类中重写该方法,该类的基类也具有一个同名的方法,但二者仅名称一样而已,并无什么关联,在派生类中使用该方法名调用的是派生类中自定义的方法,基类的方法只能通过“base.方法名”来调用。由此可见,使用ne

6、w修饰符也能实现相同的方法名,在基类和派生类中分别实现不同功能的目的,那定义virtual关键字的意义何在呢?虚方法的作用体现在由派生类对象为基类的引用赋值时。请参考一下示例:8.2使用继承机制8.2.3方法的继承与virtual、override及new关键字classParent{publicvoidF()//定义非虚方法{Console.WriteLine("基类的F方法被调用");}publicvirtualvoidG()//定义虚方法{Console.WriteLine("基类的G方法被调用");}}classChild:Pa

7、rent{newpublicvoidF()//使用new关键字,从写F方法{Console.WriteLine("派生类的F方法被调用");}publicoverridevoidG()//使用override关键字,覆盖G方法{Console.WriteLine("派生类的G方法被调用");}}8.2使用继承机制8.2.3方法的继承与virtual、override及new关键字classTeststaticvoidMain(){Childb=newChild();//实例化一个派生类对象Parenta=b;//由基类的对象引用派生类对

8、象a.F();b.F();a.G();b.G();}}8.2使用继承机制8.2.3方法的继承与virtual、override及new关键字输出结果:基类的F方法被调用派生类的F方法被调用派生类的G方法被调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。