面向对象的高级编程.ppt_第1页
面向对象的高级编程.ppt_第2页
面向对象的高级编程.ppt_第3页
面向对象的高级编程.ppt_第4页
面向对象的高级编程.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、下午10点46分,第5章面向对象的高级编程,5.1类继承和多态5.2介面5.3委托和事件,下午10点46分,5.1类继承和多态,包:隐藏调用方不需要知道的信息。继承:简化类设计。多态:类是为同名方法提供不同实现方法的功能。下午10:46,5.1.1基类和扩展类(派生类),直接模拟继承,表示实际遗传关系。表示类之间的内部连接和属性以及工作共享。下午10:46,5.1.1基类和扩展类,扩展类宣言语法:访问修饰符类扩展类名称:基类名称/节目代码扩展类继承基类中定义的所有数据的定义和方法。但是,扩展类不能继承基类的构造函数,不能继承基类中定义的private成员,只能继承基类的public或prote

2、cted成员。实现继承的茄子方法有两种:类继承和介面继承。类继承只允许单个继承,接口提供多重继承功能。继承的类称为扩展类(派生类),下午10:46,示例5-1定义和使用基类和扩展类,以及public class animal public int my property get。Setpublicanimal()console . writeline(基类构造函数函数:Hello,animal!);public voide at()console . writeline(基类方法:Eating);public class cat : animal publiccat()console . wr

3、iteline(扩展类构造函数函数:Hello,Cat!);public void walk()console . writeline(基类方法:walk);下午10:46,示例5-1定义和使用基类和扩展类(继续),class program static void main(string args)cat cat=new cat();Cat .eat();控制台。ReadLine();类Cat继承自类Animal,创建Cat的实例时,首先调用基类的构造函数函数、扩展类的构造函数函数等。基类配置函数:Hello,Animal!扩展类配置函数:hello,cat!基类方法:Eating、10:4

4、6pm、5.1.2多态和多态是指对象表示多种类型的能力。在C#中,多态定义了同一操作在不同类的实例中运行,对不同类的解释不同,最终产生不同的执行结果。实现多态的三种茄子方法:通过继承实现多态。多个类可以从同一个类继承,每个扩展类可以根据需要重写基类成员,以提供不同的功能。通过抽象类实现多态。通过接口实现多态。下午10:46,5.1.2多态,1,虚拟方法使用表达式virtual将方法或事件写回扩展类,public virtual void myMethod() /虚拟方法/节目代码扩展类使用override将: pububride写回扩展类Virtual不能与private一起使用。重写方法的名

5、称、参数数、类型和返回值必须与虚拟方法匹配。晚上10:46,示例5-2如何重写基类。class shape public virtual void show shape()console . writeline(图形!);class triangle : shape public override void show shape()base . show shape();/在基类中,方法Console。WriteLine(三角形!);classprogramstatic void main()triangleme=new triangle();Me .ShowShape();下午10:46,多

6、态对象,声明为基类名称,但使用派生类函数创建的对象称为多态对象。多态对象调用派生类的复盖方法。下午10点46分,多态技术的应用和流程孔刘,有一个名为“公司”的基类。这定义了公司最基本的数据成员类型和50茄子最基本的虚拟方法。衍生类包括“制造业公司”、“运输业公司”、“餐饮旅游公司”和“贸易业公司”。每个派生类都基于基类扩展,并根据行业特性重写虚拟方法。每个派生类生成许多代表公司的对象。税务机关检查税收,并为每个公司调用以下方法:所有职员统计();总营业统计();税务记录();应税税捐计算();社会保障局检查私人资金,调用各公司以下方法:职员数量统计();统计空想;统计医疗费用;3确认支付和应用

7、黄金();税捐检查(制造对象)、税捐检查(出货对象)、为每个公司编写这些流程,代码重复,麻烦。在晚上10:46,多态技术的应用和进程孔刘(继续),在基类中使用虚拟方法派生类中,根据需要重写方法。Public void检验税(默认类名为DObj) DObj所有职员统计信息();DObj .统计总营业();CompanyX创建多态对象,如。预设类别名称CompanyX=new manufacturing();使用多态对象作为实际参数调用纳税确认流程。根据这些节目结构,可以为不同的作业设置不同的进程,随后的作业将发生变化。如果只变更进程,则参与的每个对象将共享同一进程,进程共享也是代码复用技术。下午

8、10:46,多态技术的应用示例,public class test public static void evaluate(student stu) monweal();Stu。PhyEdu();Stu。grade point();/流程设计public static void Main();/每个阵列元素为多态物件Student Stus=new Student2student 0=new compu stu();foreach(student stud in stus)evaluate(stud);下午10:46,5.1.2多态(继续),2,在隐藏基类的方法扩展类中,可以使用

9、关键字new隐藏基类的方法。也就是说,您可以用完全不同的方法替换以前的方法。与方法复盖不同,使用new关键字时不需要将基类的方法声明为virtual。在扩展类的方法之前声明为new,可以隐藏基类的方法。用例示例:开发人员一年前由另一组开发人员设计并移交给用户,但原始开发人员未在方法前添加virtual关键字,而是要求重新设计基类的方法,原始程序无法修改。如果是牙齿,则不能使用override重写基类的方法,因此必须隐藏基类的方法。pm 10:46,示例5-3隐藏基类的方法,public class hello public void say hello()console . writeline

10、(基类的方法);public class new hello : hello public new void say hello()console . writeline(扩展类的新方法);class program static void main()hello b=new hello();b . say hello();new hello d=new new hello();d . say hello();下午10点46分,5.1.2多态性(继续),3 .在扩展类直接调用基类的方法中使用base关键字,class shape public virtual void show shape()

11、console . wrp);class triangle : shape public override void show shape()base . show shape();/在基类中,方法Console。WriteLine(三角形!);下午10:46,5.1.3抽象类,抽象类使用abstract修饰符指示类的所有成员可能无法实现。也就是说,可能只有宣言部分,没有实现部分。抽象类只能用作基类。抽象类与非抽象类的区别:第一个不能直接实例化抽象类,只能在扩展类中通过继承使用,在抽象类中使用new运算符会导致编译时错误。第二个区别是抽象类可以包含抽象成员(具有abstract修改器的成员),

12、而抽象类不能包含抽象成员。从抽象类派生非抽象类时,非抽象类必须具体实现所有继承的抽象成员。抽象类应用节目:如果具有所有派生类公用的通用方法,并且所有派生类必须实现牙齿方法,则可以在基类中将其定义为抽象方法。,下午10:46,抽象类和抽象方法示例:public abstract class Shape /抽象类public virtual void draw()console . writeline(绘制图形!);public abstract void Rotate();/抽象成员public class quare : shape public override void draw()con

13、sole . writeline(绘制正方形!);public overridevoidrotate()console . writeline(“顺时针旋转正方形!”);/实现抽象方法class program static void main(string args)squareme=new square();Me .draw();Me .rotate();下午10点46分,5.1.4密封类,密封类是其他类不能继承的类。在C#语言中,使用sealed关键字声明密封类。sealed关键字还可以限制基类的方法,以防止扩展类重写。具有sealed修饰符的方法称为密封方法。密封方法也不能被扩展类的方

14、法继承或隐藏。使用密封方法的示例:如果方法在基类中重写同名方法,但您不希望在包含方法的类的扩展类中重写方法,则可以在方法之前使用表达式sealed。下午10:46,继承5.1.5期间处理函数配置,C#在内部处理配置函数:依次查找基类,直到扩展类找到原始基类,然后开始运行原始基类的配置函数,并继续执行扩展类的配置函数下,直到最终扩展类的配置函数运行完成。注意:对于无参数的构造函数,按上述顺序运行不会出现问题。如果没有参数的构造函数和参数构造函数都存在,则建议使用以下示例中显示的方法明确调用基类的构造函数。晚上10:46,示例5-5在继承机制中使用函数,class A protected int

15、agePublic a()控制台. writeline(a 33600,age);public A(int age)this . age=age;控制台。WriteLine(a 33600,age);类别b : a public b(): base()console . writeline(b 33600,age);public b(intage): base(age)age=5;控制台。WriteLine(b 33600,age);class program static void main()bb1=new b();/a:0b:0b B2=new b(10);/A: 10B: 5,下午10

16、:46,5.2介面,界面的主要特征是只有宣言部分,没有实现部分。介面成员的实现通过类完成。接口中定义的所有方法都是public,不能再声明为public修饰符。使用Interface关键字声明接口。常用语法是访问修饰符介面名称/介面正文。通常,介面名称以大写“I”开头,表示它是接口。如果需要在没有相关的类中实现相同的功能,则可以使用接口。晚上10点46分,接口的用途,接口表示调用者和设计者的承诺。例如,您可以使用所提供方法的名称、所需的参数、每个参数类型等。当多人合作开发同一项目时,预定义相互调用的接口将大大提高项目开发效率。如果另一个设计者调用声明的接口,则不能再自由更改介面定义。否则,项目开发者之间的字典协议将失去意义。在C#中,类可以继承多个接口。下午10:46,示例5-7介面宣言和实施,interface I function 1 int sum(int x1,intx 2);interface ifunction 2 string mystring get;SetClass mytest :i function 1,I function 2 private string m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论