09_继承.ppt_第1页
09_继承.ppt_第2页
09_继承.ppt_第3页
09_继承.ppt_第4页
09_继承.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、第8章继承、类间的关系继承参照变量类型和指的对象类型不一致时使用虚函数实现动态多型抽象类和抽象方法接口的密封类,软件程序中类之间相互关联。 继承关系、组合关系、利用关系、斯坦共和国关系、8.1类之间的关系、关系的种类、(1)继承关系、在C#软件编程语言中有通过继承利用现有类、扩展其属性和方法的关系。 该现有类可以是语言本身提供的或者可以是其他程序设计师创建的。 继承可以重复使用现有的查询密码,便于维护。 一般认为,定义生物、人、鱼三类有几个问题: (1)这些个类之间的关系没有记载。 (2)定义其他类(如猫、狗)时,除了该类的特殊属性和行为外,还需要定义生物的一般属性和行为。 (3)需要修改生物

2、的一般属性或行动时,需要修改与该类相关的所有类的定义。 生物属性生物的行为,生物属性生物的行为人的特殊属性人的特殊行为,生物属性生物的行为鱼的特殊属性鱼的特殊行为,生物、人、鱼、什么继承,生物属性生物的行为,自动生物属性和行为人的特殊属性人的特殊行为,自动生物属性和行为鱼的特殊属性鱼的特殊行为生物(基本类/引入类继承的概念来解决父类/超类、人(派生类/子类)、鱼(派生类/子类)、继承、继承等问题。 我们让人类和鱼类继承了生物类。 基类和派生类的概念是相对的,一个类可以是基类,也可以是派生类类。 汽车、轿车、卡车、客车、继承、继承、轮船、交通工具、继承、继承、分析一个高等院校的人的类层次结构,一

3、个对象可以包括另一个对象。 这两个对象所属的类之间的关系称为耦合关系。 例如,汽车类和引擎类之间是组合关系,衣服类和袖子类之间是组合关系,(2)组合关系、思考、识别,1 .电视电脑音箱2 .哺乳动物虎3 .衣服衬衫4 .杯子茶5 .计算机微处理器,回答: 5和1是组合关系的例子。 3和2是继承关系的例子。 没有表示任何关系。 茶不是杯子的属性。 的双曲馀弦值。 一个班可以利用另一个班。 这种关系称为利用关系。 人开汽车,人就会用钢笔写字,(3)利用关系,实例化关系就是班级和班级实例的关系。 这种关系称为斯坦共和国化。 (4)索引关系,继承子类对象的创建过程父类的私有成员的继承问题成员变量隐藏方

4、法的定义方法,使用类和继承,8.2继承,使用继承语法形式: class子类的名称:父类名称子类特定的成员类别活动公共内容页; 公共void shout (),问题:与以下类定义了关系,C#中的所有类(包括我们自己定义的类)直接或间接从System.Object类继承。在C#的: (1)子类中,所有父类成员(结构和析构函数除外);在(2)子类中,从父类继承的公共,受保护的成员(3)子类中, 请注意,子类不能直接网站数据库到继承自父类的私有成员,因为子类对象在创建对象子类对象的过程(1)中会按定义顺序初始化子类对象中包含的父类对象练习题:下一个普计程仪拉姆的输出结果是什么? class a pub

5、lica () system.console.writeline (a () ); classbpublicb () system.console.writeline (b () ); classpointpublicpoint () system.console.writeline (点() ); 类别映射3360 pointpublicmappoint () system.console.writeline (映射(); class colorpoint 3360映射公布=newa (); 公共bb; public colorpoint () system.console.writelin

6、e (colorpoint () ); publicstaticvoidmain ()新协调(); 在Point,MapPoint,ColorPoint,子类中,不能直接网站数据库从父类继承的私有成员。 下一个计程仪程序编译错误,公共类a私有int age=10; 公共等级测试3360 apublicvoidfun () age=20。age、a类的对象、age、测试类的对象、从a类继承、(3)父类的私有成员继承问题、子类中从父类继承的私有成员如何网站数据库? 从父类继承的公共或受保护的成员,从父类继承的私有成员,公共类a私有int age; 中网站数据库。 公共语音设置(intage ) t

7、his.age=age。 公共获得奖励()返回奖励; 公共等级测试3360公共等级测试(字符串)测试t1=新测试(); 安装(22 ); int age=t1.getage (); system .控制台.写入(age ); (4)隐藏成员变量如果在子类中新定义的成员变量与父类中的成员变量具有相同的名称,则在该子类中父类中具有相同名称的成员变量将被隐藏。 类别活动公共发布日期=10; class human : livingnewpublicintage=20。age、living类对象、age、human类对象、从age、living类继承、human类新定义的成员变量,human h1=n

8、ew human (); age=20; 的双曲馀弦值。 子类可以通过从父类继承的方法网站数据库到从父类继承的隐藏成员变量。 类活动公共引入代码=10公共引入代码()返回代码; 等级人力资源: livingpublicintage=20。 (5)隐藏方法如果子类中新定义的方法的名称、门值类型和残奥仪表列表与父类的方法完全相同,子类的方法将隐藏父类的方法。 (注意和重负荷的区别),classlivingpublicvoidshout () system.console.write (动物的名称! ); class human : livingnewpublicvoidshout () syste

9、m.console.write (人名! ); classapublicvoidprintnumber (inta )系统.控制台. writeline (a ); classb :可用打印机(inta,intb )系统.控制台.写入(a ); 公共静态主机() b b=新b (); b .打印机(100 );演习问题:分析以下方程式的输出结果,结果: 101,8.3参照变量类型与指定的对象类型不一致的class Living public int age; public void eat () system.console.writeline (吃); class human :生命公用程序

10、。 public void read () system.console.writeline (读书); (1)父类引用指的是子类对象。 living l1=新人(); 如果父类引用指向子类对象,则父类引用实际上指向子类对象中的隐式父类对象。 因此,只能将父类引用网站数据库到子类对象中继承自父类的成员。 l1.eat (); /正确的system.console.writeline (l1. age ); 正确的l1.read (); 错误(Human)l1).read (); /如果正确地强制类型转换了l1,则read ()子类引用将返回父类引用Human h1=new Human ();

11、Living l1=h1; /是,(2)子类引用不能指向父类对象。 human h1=新生(); /错误的父类引用通常不能直接分配给子类引用。living l1=新生命(); Human h1=l1; /错误如果父类引用指向子类对象,则可以将该父类引用指派给子类引用,Living l1=new Human (); Human h1=(Human)l1; h1.读取(); 类公共字符串=a; b类3360新公共字符串=b。 classtestpublicstaticvoidmain () aa1=newb (); B b1=(B)a1; system .控制台.写入(b1. s ); b b2=

12、新b (); A a2=b2; A a3=b2; system .控制台.写入(a2. s ); 写入控制台(b ) a3) . 课题:下一个普计程仪拉姆的输出结果? 输出结果: B A B,(1)父类参照子类对象(2)指向子类改写(override )父类的虚函数(3)父类参照调用改写的方法,利用8.4虚函数实现动态多态性,classapuble 等级c 3360 apublicoverridevoidfun () system.console.write (c ); a a1=新b (); a1.富恩(); a1=新c (); a1.富恩(); 在a1.fun ()逻辑性中,应该调用a1所

13、指的对象从父类继承的方法,但由于存在多种状态,状况发生变化。 多态性的例子。 classpersonpublicvoiddrive (carc ) c.run (); classtestpublicstaticvoidmain ()个人p1=新个人(); xiali x1=新向量(); 驱动器(x1); benz b1=新benz (); 驱动器(b1); System.Console.ReadLine ();classcarpublicvirtualvoidrun () class xiali 3360 carpublicoverridevoidrun () system.console.w

14、rite (夏利车正在运行)。 classbenz 3360 carpublicoverridevoidrun () system.console.write (奔驰的汽车在奔驰); 练习使用多态性来写绘画的计程仪程序,可以画圆、矩形,将来很容易扩展通讯端口新的图形,使用8.5抽象类和抽象方法,使用多态性时,我们不需要做父类的对象,父类中的去不包含方法主体的方法是抽象方法,该方法主体的实现在该类的子类中根据自己的情况来实现。 /抽象方法public abstract void fun (); 包含抽象方法的类称为抽象类。 abstractclassapublicabstractvoidfun (); 在抽象类中,并非所有方法都是抽象方法。 但是,如果是一个,则必须将该类定义为抽象类。 类别a公共助理void fun (); 错误,abstractclassapublicvoidfun () system.console.writeline (hello ); 抽象类中可以不包含抽象方法。 的双曲馀弦值。 抽象类无法创建对象。abstractclassapublicvoidfun

温馨提示

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

最新文档

评论

0/150

提交评论