python 多继承,python面向对象的继承和多态

  python 多继承,python面向对象的继承和多态

  第一,继承性和多态性;

  类之间的继承;

  基类,(父类);

  成员变量:描述类的属性。

  成员:函数

  派生类(子类)

  反映与基类的差异

  继承;基类和派生类之间的访问权限

  1 .公共继承

  基类中的公共成员变量被继承后在派生类中也是公共的(可以在类外访问);

  基类中受保护的成员变量在被继承后可以在派生类中被访问。派生类中有两种权限,protect。

  (子类对象不能在类外访问);

  基类中的私有成员变量继承后不能在派生类中访问,但已经被继承了(不能在类外访问);

  2 .受保护的遗产;

  3 .私人继承;

  注意;基类中的私有成员是从子类中继承的,但是不能直接访问!

  访问权限;受公共保护的私人;

  兼容的分配规则;

  1.派生类的对象可以直接赋给基类的对象,反之亦然。

  总结;

  1.继承的概念

  2.子类中继承方式不同的基类中不同访问权限成员的权限变化。

  3.分配兼容性规则-公共

  4.隐藏同名(派生类不能访问与基类同名的成员)(在与基类同名的成员前添加基类名和作用域限定符)

  5.派生类中的默认成员函数

  如何让一个类无法继承?

  在基类中,使构造函数成为私有的;派生类的构造函数初始化不能访问基类的构造函数,并且不能在类外定义。

  基本类对象。

  关键词;决赛;

  功能;该类是继承的。

  钻石传承;单一遗传和多重遗传复合

  缺陷;存在歧义;

  解决歧义;

  1.使访问明确化。

  2.虚拟继承;

  比溥的继承多了四个字节。

  派生类的对象模型是颠倒的:基类在下面,派生类在上面。

  编译器为派生类生成了默认构造函数,该构造函数用于填充构造函数中对象的前四个字节。

  编译器为派生类生成了默认构造函数,该构造函数用于填充构造函数中对象的前四个字节。

  多态性;

  1.什么是多态性?

  多态性字面意思是“多种状态”。在面向对象语言中,实现接口的许多不同方法都是多态的。

  c中也是如此,同样的操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,您可以通过指向基类来调用和实现派生类中的方法。

  c,实现多态性的方法有以下几种:虚函数、抽象类、覆盖和模板(注:重载与多态性无关)。

  2.多态实现的条件;(在继承系统中)

  基类必须包含虚函数,派生类必须重写基类中的虚函数。

  如何调用虚函数:通过指针或者基类的引用调用虚函数。

  性能;多态行为;程序运行时,Anjiaoji类指针指向不同的子类,调用不同子类的虚函数。

  两个条件缺一不可,否则多态性无法实现。无论传递哪种对象,都调用基类的虚函数。

  重写;

  重写派生类的虚函数(一个在基类中,一个在派生类中)

  派生类中的虚函数原型必须与基类中的虚函数原型完全相同(返回值类型、函数名和参数列表)。

  例外情况;

  协变-基类的虚函数返回基类的指针或引用。

  派生类的虚函数返回派生类的指针或引用。

  基类的虚函数的返回值类型与派生类的不同。

  破坏性功能;

  只要基类的析构函数是虚函数,派生类的析构函数就在定义后被重写。

  基类的析构函数名称不同于派生类的析构函数名称。

  基类和派生类的虚函数的访问权限可以不同;将通用基类的虚函数设置为

  公众的

  基类和派生类的虚函数的访问权限可以不同;将通用基类的虚函数设置为public

  3.关键词;最后的

  最后的装饰

  最终虚函数——这个虚函数不能被派生类重写。

  帅气的冷面;Override帮助用户检查他们是否可以重写;

  号码重载,同名,隐藏覆盖

  4.抽象类;

  概念;

  包含纯虚函数的类称为抽象类。无法实例化对象。

  如果一个类包含虚函数

  -1.该对象还有四个字节;

  -2.四个字节的内容在构造中填充。

  -3.在前四个字节中放一个指针(虚拟表指针)。地址——-"指向虚函数。

  虚函数的存储规则;它们按照类中声明的顺序存储。

  虚拟基表的构造规则;

  按照虚函数在类中的声明顺序依次将虚函数放入虚拟表中;

  派生类中虚表的构造规则;

  -1.复制基类虚拟表的内容,放入派生类虚拟表中。

  -2.如果派生类重写了基类的虚函数,则用派生类自己的虚函数替换它,并在虚拟表中的相同偏移位置

  基类虚函数

  -3.对于派生类本身新增加的虚函数,按照类中声明的顺序放在虚表的末尾。

  对虚函数的调用

  -1.从对象的前四个字节获取虚拟表的地址。

  -2.传递这个指针

  -3.从虚拟表中获取当前调用的虚函数的地址。

  -4.调用虚函数

  5.多态实现原理

  类;虚函数的大小->类->四个多字节->监控窗口3354 >虚函数地址

  派生类:NULL 3354“虚表的内容和基类的内容完全一样-”但是虚表指针不一样(基类和派生类用的不是同一个。

  虚拟表

  6.多态的调用原则:必须满足实现多态的条件。

  -1.从对象的前四个字节中获取虚拟表的地址

  -2.向虚函数传递参数:用户定义的参数和这个指针。

  -3.从虚拟表中找到系数函数的地址

  -4.打电话

  内联函数(编译时已扩展)的代码可以编译,但不能实现多态性。

  为什么静态成员函数不能做虚函数?

  函数调用——“必须先找到虚表——”从对象的前四个字节获取虚表指针——必须有对象;

  没有(this),静态成员函数无法创建对象;

  构造函数初始化一个对象。

  如果类包含虚函数,那么虚表指针必须放在构造中对象的前四个字节中。

  假设构造函数可以作为虚函数使用:通过虚拟表调用的构造函数从对象的前四个字节中获取数据。

  构造函数不能用作虚函数。

  7.多态性分类;静态多态性和动态多态性

  静态多态(静态绑定/早期绑定):在编译期间,已经确定了应该调用哪个函数。

  函数重载函数模板

  动态多态(动态绑定/后期绑定):运行时确认应该调用虚函数。

  在继承系统中:通过重写基类虚函数。

  8.一般不会采用继承方式——代码复用。

  混凝土类

  派生列

  基类中的成员变量和成员函数继承自子类。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python类与对象,Python类和对象,Python面向对象之类和对象
  • Python中的封装,python对函数进行封装,Python面向对象中的封装详情
  • python面向对象self作用,python函数中的self是什么意思
  • 简述Python的特点,python面向对象和面向过程的区别
  • python面向对象总结,python中的面向对象详解
  • python面向对象的特征是什么,python中面向对象的概念
  • python是一种面向对象的编程语言,python面向对象的编程
  • python面向对象中的继承有什么特点,python类的继承 通俗解释
  • python是一种面向对象的什么语言,python面向对象怎么理解
  • python面向对象是什么意思,python面向对象和面向过程的区别
  • python面向对象编程的三大特性,python 对象 类
  • 面向对象编程python,python面向对象编程指南
  • Python面向对象编程,Python面向对象吗
  • python2中面向对象的多继承是,python面向对象中的继承有什么特点
  • python中对象的概念是什么-如何理解对象-,python面向对象和类
  • 留言与评论(共有 条评论)
       
    验证码: