《继承与派生shuli》课件.pptx

上传人:太** 文档编号:97806218 上传时间:2024-07-07 格式:PPTX 页数:46 大小:542.09KB
返回 下载 相关 举报
《继承与派生shuli》课件.pptx_第1页
第1页 / 共46页
《继承与派生shuli》课件.pptx_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《《继承与派生shuli》课件.pptx》由会员分享,可在线阅读,更多相关《《继承与派生shuli》课件.pptx(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、继承与派生继承与派生shulishuli 制作人:时间:2024年X月CONTENTS目录目录第第1 1章章 简介简介第第2 2章章 总结总结第第3 3章章 继承继承第第4 4章章 派生派生第第5 5章章 多重继承多重继承第第6 6章章 继承的实际应用继承的实际应用第第7 7章章 总结总结 01010101第第1章章 简简介介 继承与派生继承与派生继承与派生继承与派生shulishulishulishuli的的的的意义意义意义意义继承是一种面向对象编程的重要机制,它允许我们定义一个新类,从而可以重继承是一种面向对象编程的重要机制,它允许我们定义一个新类,从而可以重继承是一种面向对象编程的重要机

2、制,它允许我们定义一个新类,从而可以重继承是一种面向对象编程的重要机制,它允许我们定义一个新类,从而可以重用已有类的属性和方法。派生用已有类的属性和方法。派生用已有类的属性和方法。派生用已有类的属性和方法。派生shulishulishulishuli则是在子类中生成新的属性和方法,从而定则是在子类中生成新的属性和方法,从而定则是在子类中生成新的属性和方法,从而定则是在子类中生成新的属性和方法,从而定制化子类的特殊需求。制化子类的特殊需求。制化子类的特殊需求。制化子类的特殊需求。继承与派生继承与派生shulishuli的特点的特点继承可以重用已有类的属性和方法代码复用代码复用派生shuli可以在

3、子类中生成新的属性和方法,满足特殊需求定制化需求定制化需求通过类之间的继承关系,可以更清晰地呈现程序逻辑提高代码可读提高代码可读性性通过类之间的继承关系,可以减少代码量减少代码冗余减少代码冗余030102通过继承游戏引擎已有的类,可以快速生成新的游戏元素,提高开发效率游戏开发游戏开发通过继承已有的类,可以快速生成新的窗体、控件等,提高开发效率桌面桌面应应用程序开用程序开发发通过继承已有的类,可以快速生成新的组件,提高代码复用率Web开开发发对象对象对象对象对象是类的一个实例对象是类的一个实例对象有自己的状态和行为对象有自己的状态和行为属性属性属性属性属性是对象的状态属性是对象的状态属性用于描述

4、对象的特征属性用于描述对象的特征方法方法方法方法方法是对象的行为方法是对象的行为方法用于描述对象的动作方法用于描述对象的动作继承与派生继承与派生shulishuli的基础概念的基础概念类类类类类是对象的模板类是对象的模板类定义了对象的属性和方法类定义了对象的属性和方法定义子类定义子类在在C+C+中,定义子类需要使用关键字中,定义子类需要使用关键字classclass,并使,并使用冒号表示继承关系。例如,下面的代码定义了用冒号表示继承关系。例如,下面的代码定义了一个一个CircleCircle类,它继承自类,它继承自ShapeShape类:类:class Circle:public Shape

5、class Circle:public Shape .;实现子类的继承实现子类的继承在在C+C+中,实现子类的继承需要使用关键字中,实现子类的继承需要使用关键字publicpublic,并使用类名加作用域操作符,并使用类名加作用域操作符:来访问父来访问父类的属性和方法。例如,下面的代码实现了类的属性和方法。例如,下面的代码实现了CircleCircle类继承类继承ShapeShape类的面积计算方法:类的面积计算方法:double Circle:getArea()double Circle:getArea()return radius*radius*PI;return radius*radiu

6、s*PI;子类代码的编写子类代码的编写如果不小心重名了,则会导致父类的方法被覆盖子类的方法名子类的方法名不能与父类重不能与父类重名名如果需要访问,则需要使用父类提供的访问接口父类的私有成父类的私有成员不能被子类员不能被子类访问访问这可以通过使用关键字super来实现子类的构造函子类的构造函数必须调用父数必须调用父类的构造函数类的构造函数这个过程称为重写,可以通过使用关键字override来实现子类可以覆盖子类可以覆盖父类的方法父类的方法重载与重写重载与重写重载与重写重载与重写重载和重写都是重载和重写都是重载和重写都是重载和重写都是C+C+C+C+中常用的操作。重载是指在一个类中定义多个具有相同

7、名称中常用的操作。重载是指在一个类中定义多个具有相同名称中常用的操作。重载是指在一个类中定义多个具有相同名称中常用的操作。重载是指在一个类中定义多个具有相同名称的方法,但是参数列表不同。可以根据参数列表的不同,自动调用不同的方法。的方法,但是参数列表不同。可以根据参数列表的不同,自动调用不同的方法。的方法,但是参数列表不同。可以根据参数列表的不同,自动调用不同的方法。的方法,但是参数列表不同。可以根据参数列表的不同,自动调用不同的方法。重写则是指子类对父类的方法进行了重新定义,使得子类可以按照自己的需要重写则是指子类对父类的方法进行了重新定义,使得子类可以按照自己的需要重写则是指子类对父类的方

8、法进行了重新定义,使得子类可以按照自己的需要重写则是指子类对父类的方法进行了重新定义,使得子类可以按照自己的需要重新实现这些方法。重新实现这些方法。重新实现这些方法。重新实现这些方法。继承与派生继承与派生shulishuli的注意事项的注意事项继承只能继承已有类的属性和方法,无法继承对象的状态继承的局限性继承的局限性子类与父类的关系是包含与被包含的关系子类与父类的子类与父类的关系关系多重继承可能会导致二义性,需要特殊处理多重继承的问多重继承的问题题虚函数是用于实现动态绑定的重要工具,需要注意其使用方式虚函数的使用虚函数的使用 03030303第第2章章 继继承承 继承的概念继承的概念继承是继承

9、是OOPOOP编程中的一个重要概念,指子类从父编程中的一个重要概念,指子类从父类中获得属性和方法的过程。继承可以使代码重类中获得属性和方法的过程。继承可以使代码重用性更高,同时减少代码的冗余,提高程序的可用性更高,同时减少代码的冗余,提高程序的可维护性。维护性。继承的分类继承的分类指子类只从一个父类继承属性和方法单一继承单一继承指子类从多个父类继承属性和方法多重继承多重继承指继承链是否呈线性结构线性继承和非线性继承和非线性继承线性继承指是否继承抽象类或接口接口继承和实接口继承和实现继承现继承继承的实现方式继承的实现方式父类的公有成员在子类中依然是公有的,私有成员在子类中不可访问公有继承公有继承

10、父类的保护成员在子类中为保护成员,公有成员在子类中为保护成员保护继承保护继承父类的公有和保护成员在子类中均为私有成员私有继承私有继承子类从多个父类中获取属性和方法多重继承多重继承示例分析示例分析示例分析示例分析在在在在C+C+C+C+中,子类的继承方式有多种,包括公有继承、保护继承和私有继承等。下中,子类的继承方式有多种,包括公有继承、保护继承和私有继承等。下中,子类的继承方式有多种,包括公有继承、保护继承和私有继承等。下中,子类的继承方式有多种,包括公有继承、保护继承和私有继承等。下面我们以一个简单的示例来说明子类如何实现基类的继承。面我们以一个简单的示例来说明子类如何实现基类的继承。面我们

11、以一个简单的示例来说明子类如何实现基类的继承。面我们以一个简单的示例来说明子类如何实现基类的继承。示例分析示例分析定义一个基类Shape,包含两个公有属性和一个纯虚函数基类的定义基类的定义定义两个子类Rectangle和Circle,并从Shape中继承其属性和方法子类的定义子类的定义子类通过调用基类的构造函数,实现对基类的继承子类实现基类子类实现基类的继承的继承实现继承指子类继承了基类的实现,包括属性和方法的具体实现,而接口继承只继承了基类的方法,没有实现实现继承和接实现继承和接口继承的区别口继承的区别0301021.提高代码的重用性 2.减少代码的冗余 3.提高程序的可维护性优点优点继承广

12、泛应用于实际开发中,如界面开发、游戏开发、框架开发等。应应用用1.继承层次较深时,会影响程序的性能 2.继承关系较为复杂时,会增加程序的复杂度缺点缺点总结总结继承是继承是OOPOOP编程中的一个重要概念,可以使代码编程中的一个重要概念,可以使代码的重用性更高,减少代码的冗余,提高程序的可的重用性更高,减少代码的冗余,提高程序的可维护性。在实际开发中,应根据具体情况选择合维护性。在实际开发中,应根据具体情况选择合适的继承方式,避免继承层次过深或继承关系过适的继承方式,避免继承层次过深或继承关系过于复杂。于复杂。04040404第第3章章 派生派生 派生的概念派生的概念派生是指在已有类的基础上,定

13、义一个新的类,派生是指在已有类的基础上,定义一个新的类,使其继承原有类的成员和方法,并能添加新元素使其继承原有类的成员和方法,并能添加新元素的过程。派生与继承的区别在于,继承只是将原的过程。派生与继承的区别在于,继承只是将原有的成员和方法直接继承下来,而派生则可以在有的成员和方法直接继承下来,而派生则可以在原有成员和方法的基础上进行添加和修改。原有成员和方法的基础上进行添加和修改。派生的类型派生的类型派生类的所有成员都能被外部访问公有派生公有派生派生类的所有成员都能被该类的成员函数和友元函数访问保护派生保护派生派生类的所有成员都只能被该类的成员函数和友元函数访问私有派生私有派生 派生类对象的构

14、造与析构派生类对象的构造与析构派生类对象的构造与析构派生类对象的构造与析构派生类的构造函数在定义时需要调用基类的构造函数来初始化基类部分派生类的构造函数在定义时需要调用基类的构造函数来初始化基类部分派生类的析构函数会自动先调用派生类的析构函数,再调用基类的析构函数派生类的析构函数会自动先调用派生类的析构函数,再调用基类的析构函数派生类对象的初始化和赋值派生类对象的初始化和赋值派生类对象的初始化和赋值派生类对象的初始化和赋值派生类对象的初始化需要先初始化基类部分,再初始化派生类的成员部分派生类对象的初始化需要先初始化基类部分,再初始化派生类的成员部分派生类对象的赋值也需要按照同样的顺序进行派生类

15、对象的赋值也需要按照同样的顺序进行 派生的实现派生的实现派生类的定义派生类的定义派生类的定义派生类的定义在类定义中使用关键字在类定义中使用关键字publicpublic、protectedprotected或或privateprivate来指定派生类来指定派生类型型语法:语法:class class 派生类名派生类名:访问控制符访问控制符 基类名基类名 派生类成员列表派生类成员列表 030102class HDD:public Storage派生类的定义派生类的定义mHDD.Read();继继承承类类的成的成员员函数的函数的调调用用HDD mHDD;派生派生类对类对象的象的调调用用派生的优缺点

16、派生的优缺点派生的优缺点派生的优缺点派生的优点主要在于它能让我们更好地复用代码,增加程序的可维护性和可读派生的优点主要在于它能让我们更好地复用代码,增加程序的可维护性和可读派生的优点主要在于它能让我们更好地复用代码,增加程序的可维护性和可读派生的优点主要在于它能让我们更好地复用代码,增加程序的可维护性和可读性;而派生的缺点则在于它可能会增加代码的复杂度,并且可能会造成类与类性;而派生的缺点则在于它可能会增加代码的复杂度,并且可能会造成类与类性;而派生的缺点则在于它可能会增加代码的复杂度,并且可能会造成类与类性;而派生的缺点则在于它可能会增加代码的复杂度,并且可能会造成类与类之间的耦合度上升。但

17、总体来说,派生是一种非常重要的编程技术,我们需要之间的耦合度上升。但总体来说,派生是一种非常重要的编程技术,我们需要之间的耦合度上升。但总体来说,派生是一种非常重要的编程技术,我们需要之间的耦合度上升。但总体来说,派生是一种非常重要的编程技术,我们需要在实际开发中合理使用。在实际开发中合理使用。在实际开发中合理使用。在实际开发中合理使用。派生是面向派生是面向对对象象编编程中非常重要的概念,它具有程中非常重要的概念,它具有以下以下优优点和缺点:点和缺点:05050505第第4章章 多重多重继继承承 多重继承的概念多重继承的概念一个子类继承多个基类或者一个基类有多个派生类定义定义提高代码重用率和灵

18、活性作用作用通过多次派生实现实现方式实现方式 多重继承的问题多重继承的问题基类成员函数或数据成员的命名冲突命名冲突命名冲突有两个或以上基类继承同一个基类,导致二义性菱形继承菱形继承通过虚继承解决菱形继承的二义性虚基类虚基类 030102C+中使用类似于派生类的方式继承多个基类多重继承的定义多重继承的定义使用虚继承菱形菱形继继承的承的问题问题解决解决采用作用域分辨符和虚继承解决调调用基用基类类的成的成员员函数函数缺点缺点缺点缺点导致命名冲突导致命名冲突复杂度增加复杂度增加应用应用应用应用QtQt中的信号和槽机制中的信号和槽机制MFCMFC的框架类的框架类 多重继承的优缺点多重继承的优缺点优点优点

19、优点优点提高代码重用率和灵活性提高代码重用率和灵活性增强面向对象的特性增强面向对象的特性总结总结多重继承是一种高级的继承方式,可以提高代码多重继承是一种高级的继承方式,可以提高代码重用率和灵活性。但是也存在一些问题,如命名重用率和灵活性。但是也存在一些问题,如命名冲突和二义性,并且增加了复杂度。在实际应用冲突和二义性,并且增加了复杂度。在实际应用中,需要根据具体情况进行选择和使用。中,需要根据具体情况进行选择和使用。06060606第第5章章 继继承的承的实际应实际应用用 派生类的应用派生类的应用例如UIButton、UILabel等UIKit类的扩展扩展已有类的扩展已有类的功能功能例如新的引

20、擎类或游戏类设计新的类设计新的类例如ASIHTTPRequest等第三方库继承自框架或继承自框架或第三方库类第三方库类 多重继承的应用多重继承的应用例如Java中的接口实现多重继承实现多重继承的方式的方式例如构造复杂的数据结构多重继承的使多重继承的使用场景用场景例如避免菱形继承等问题多重继承的注多重继承的注意事项意事项 030102例如UIView的子类和UIControl的子类iOSiOS开发中的继承开发中的继承例如Actor、Weapon等类的继承游游戏编戏编程中的程中的继继承承例如模板方法模式、策略模式等面向面向对对象象设计设计模式中的模式中的继继承承OOPOOPOOPOOP的设计的设计

21、的设计的设计面向对象编程的设计思想,强调要将现实世界中的对象抽象为类,通过继承、面向对象编程的设计思想,强调要将现实世界中的对象抽象为类,通过继承、面向对象编程的设计思想,强调要将现实世界中的对象抽象为类,通过继承、面向对象编程的设计思想,强调要将现实世界中的对象抽象为类,通过继承、封装和多态等方式实现代码的可重用性、可维护性和可扩展性。封装和多态等方式实现代码的可重用性、可维护性和可扩展性。封装和多态等方式实现代码的可重用性、可维护性和可扩展性。封装和多态等方式实现代码的可重用性、可维护性和可扩展性。设计模式的应用设计模式的应用例如工厂方法、抽象工厂等创建型模式创建型模式例如适配器、桥接、装

22、饰器等结构型模式结构型模式例如观察者、命令、访问者等行为型模式行为型模式 程序设计的思路程序设计的思路在程序设计中,继承是一种重要的设计思路,可在程序设计中,继承是一种重要的设计思路,可以通过继承实现代码的复用和抽象,使程序结构以通过继承实现代码的复用和抽象,使程序结构更加清晰和合理。同时,继承也有其局限性,必更加清晰和合理。同时,继承也有其局限性,必须谨慎使用。须谨慎使用。07070707第第6章章 总结总结 继承与派生继承与派生继承与派生继承与派生shulishulishulishuli的的的的重要性重要性重要性重要性继承与派生继承与派生继承与派生继承与派生shulishulishulis

23、huli是面向对象程序设计中的重要概念之一。它是指一个类从另一是面向对象程序设计中的重要概念之一。它是指一个类从另一是面向对象程序设计中的重要概念之一。它是指一个类从另一是面向对象程序设计中的重要概念之一。它是指一个类从另一个类继承属性和方法,并且可以通过派生产生新的类。继承使得代码重用变得个类继承属性和方法,并且可以通过派生产生新的类。继承使得代码重用变得个类继承属性和方法,并且可以通过派生产生新的类。继承使得代码重用变得个类继承属性和方法,并且可以通过派生产生新的类。继承使得代码重用变得更加容易,同时也能够提高程序的可读性和可维护性。更加容易,同时也能够提高程序的可读性和可维护性。更加容易

24、,同时也能够提高程序的可读性和可维护性。更加容易,同时也能够提高程序的可读性和可维护性。继承与派生继承与派生shulishuli的优缺点的优缺点1.代码重用优点优点2.可扩展性3.可维护性4.可读性继承与派生继承与派生继承与派生继承与派生shulishulishulishuli的的的的实际应用实际应用实际应用实际应用继承与派生继承与派生继承与派生继承与派生shulishulishulishuli可以在很多场景中使用,比如:可以在很多场景中使用,比如:可以在很多场景中使用,比如:可以在很多场景中使用,比如:1.1.1.1.设计图形界面库时,可以使用继承实现各种控件的共性和特性。设计图形界面库时,

25、可以使用继承实现各种控件的共性和特性。设计图形界面库时,可以使用继承实现各种控件的共性和特性。设计图形界面库时,可以使用继承实现各种控件的共性和特性。2.2.2.2.设计游戏时,可以使用继承实现游戏对象的共性和特性。设计游戏时,可以使用继承实现游戏对象的共性和特性。设计游戏时,可以使用继承实现游戏对象的共性和特性。设计游戏时,可以使用继承实现游戏对象的共性和特性。3.3.3.3.设计数据库时,可以使用继承实现数据表的共性和特性。设计数据库时,可以使用继承实现数据表的共性和特性。设计数据库时,可以使用继承实现数据表的共性和特性。设计数据库时,可以使用继承实现数据表的共性和特性。4.4.4.4.设

26、计项目时,可以使用继承实现代码的重用,提高开发效率。设计项目时,可以使用继承实现代码的重用,提高开发效率。设计项目时,可以使用继承实现代码的重用,提高开发效率。设计项目时,可以使用继承实现代码的重用,提高开发效率。030102将接口和实现分离,实现更加灵活的设计。1.1.面向接口编程面向接口编程3.组合模式2.多重继承游戏设计游戏设计游戏设计游戏设计继承基类实现游戏对象的共性和特性继承基类实现游戏对象的共性和特性派生子类实现不同的游戏对象派生子类实现不同的游戏对象数据库设计数据库设计数据库设计数据库设计继承基类实现数据表的共性和特性继承基类实现数据表的共性和特性派生子类实现不同的数据表派生子类实现不同的数据表项目开发项目开发项目开发项目开发继承基类实现代码的重用继承基类实现代码的重用派生子类实现不同的功能派生子类实现不同的功能继承与派生继承与派生shulishuli的使用场景的使用场景图形界面库图形界面库图形界面库图形界面库继承基类实现各种控件的共性和特性继承基类实现各种控件的共性和特性派生子类实现具体的控件派生子类实现具体的控件 谢谢观看!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁