C#程序设计基础入门教程chapter04.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#程序设计基础入门教程(第2版);简述构造方法的特点? 简述面向对象的三大特征? ;;;;;;在类的继承中,需要注意一些问题,具体如下: 继承具有单一性,也就是说一个类只能有一个直接的父类,例如下面的语句是错误的。 多个类可以继承同一个父类,例如下面的语句是正确的。 ; 在C#中,多层继承是可以的,即一个类的父类可以再去继承其他类,例如C类继承自B类,B类又继承自A类,此时C类也可称作A类的子类,下面的语句是正确的。 ;在上一章中学习了构造方法的定义以及重载,了解到构造方法可以用于初始化类的静态成员和实例成员。在继承关系中,构造方法的执行过程会变得有些不一样,下面进行具体分析。 当一个类的对象被创建时,如果该类拥有父类的话,在调用自身构造方法的同时还会调用父类的构造方法,其具体执行过程如下图所示。 从图中可以看出,子类在实例化对象时,首先会调用父类的构造方法,然后再调用自身的构造方法。;子类在继承父类时可以对父类的成员进行扩展,如果子类中出现与父类同名的方法,那么在调用该方法时程序就不能明确该方法是属于父类还是子类,这时编译器就会提示使用new关键字隐藏基类方法。接下来通过一个案例来演示如何隐藏基类方法。; 程序编译出现警告,如下图所示。; 运行结果,如下图所示。;在实际开发过程中,某些方法的参数类型为引用类型,如果调用时传入的是数值类型,此时需要进行装箱操作。同样当一个方法的返回值类型为数值类型时,实际上该方法的返回值为引用类型,此时就需要进行拆箱操作。 简单来说,装箱就是将数值类型转换为引用类型,拆箱就是将引用类型转换为数值类型。 接下来通过一个案例来学习装箱与拆箱操作,具体如下所示。;4.1.4 装箱和拆箱; 运行结果,如下图所示。;;在C#中,使用sealed关键字修饰的类不可以被继承,也就是不能派生子类,这样的类通常被称为密封类。接下来通过一个简单的例子来演示sealed关键字的使用。;4.2.1 sealed关键字修饰类;4.2.1 sealed关键字修饰类;当一个类中的方法被sealed关键字修饰后,这个类的子类将不???重写该方法。接下来通过一个案例来演示被sealed关键字修饰的方法。;4.2.2 sealed关键字修饰方法;程序编译报错,如下图所示。;;在设计一个方法时,通常希望该方法具备一定的通用性。例如要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类的叫声。此时,可以通过多态的方式来实现这种功能。所谓多态就是当调用同一个方法时,由于传入的参数类型不同而导致执行效果各异的现象。;在继承关系中,子类会自动继承父类中的方法,但有时父类的方法不能满足子类的需求,那么可以对父类的方法进行重写。当重写父类的方法时,要求子类的方法名、参数类型和参数个数必须与父类方法相同,而且父类方法必须使用virtual关键字修饰,子类方法必须使用override关键字修饰。 上一节案例中,Dog类从Animal类继承了Shout()方法,该方法在被调用时会打印“动物叫”。这明显不能描述一种具体动物的叫声,Dog类对象表示犬类,发出的叫声应该是汪汪。为了解决这个问题,可以在Dog类中重写父类Animal中的Shout()方法,具体代码如下所示。;4.3.1 重写父类方法;4.3.1 重写父类方法;运行结果如下图所示。;在C#中为了实现多态,允许使用一个父类类型的变量来引用一个子类对象,根据被引用子类对象特征的不同,得到不同的运行结果。而实现多态的方式有多种,接下来通过重写的方式来演示如何实现多态。;namespace Program08{ ...... class Dog : Animal{ public override void Shout(){ Console.WriteLine(汪汪......); } } class Program{ static void Main(string[] args){ Animal an1 = new Cat(); //创建Cat对象,使用Animal类型的变量an1引用 Animal an2 = new Dog(); //创建Dog对象,使用Animal类型的变量an2引用 animalShout(an1); //调用animalShout()方法,将an1作为参数传入 animalShout(an2); //调用a

您可能关注的文档

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档