继承
继承是面向对象的三大特征之一;
继承目的:拓展功能
产生:派生类
根本:呈现了面向对象程序设计的层次结构,体现了由简单到复杂的过程
继承的概念定义:被继承的成为基类;新产生的为派生类
在类型的继承层次结构中,保护属性看做共有属性
继承性具有传递性
任何继承关系,派生类的方法可以访问基类里的共有和保护成员
构造函数和析构函数不能被继承
*基类与派生类:
在任何需要基类对象的地方都可以用公有派生类的对象来代替,这条规则称 赋值兼容规则。
在c++面向对象编程中一条重要的规则是:公有继承意味着是一个
赋值兼容性规则:1.必须是公有继承,2.派生类->基类赋值,不可反
共有继承是
定义:是一个的意思
性质:1.同名隐藏-在父类中有相同的
2.越往上越一般能力越弱,越往下能力越强;一般到特殊 ,功能弱到功能强;子类型的能力比父类型能力强
例:普通迭代器继承常迭代器
*两层继承关系中的数据成员(访问控制)
基类 public protected private
public public protected 不能访问
proteced protected protected 不能访问
private public private 不能访问
aa中只能访问共有成员
b五个成员:有一个隐藏a对象,aa对象,bx,by,bz
继承对象和具名对象的区别:继承来的隐藏基类对象的访问共有和保护成员,设计的成员只能访问成员对象的共有
*同名隐藏
同名隐藏和函数重载??区别
多态性
在不同层次的类中,以及在同一类中
编译时的多态成为早期绑定,包含运算符的重载
早起绑定(静态联编):编译时期确定了调用关系--本质根据函数名和参数来确定该调用哪一个函数 (base.print()) 例子:对象调动虚方法,早期绑定 ,
晚绑定(动态联编):对象生存后,程序运行时的多态称为晚绑定,运行过程中才能确定调用关系
实现 运行时多态(晚绑定)条件
1.公有继承关系(代表是一个的意思)2.能设计成多态的函数定义为虚函数3.用指针或者引用调动虚函数
联编是指计算机程序自身彼此关联的过程,是把一个标识符和一个存储地址联系在一起的过程,也就是把一条消息和一个对象的操作相结合的过程
动态联编时:在编译时确定默认值,
--使用基类指针指明派生类对象并使用该指针调用虚函数(成员选择符用‘->’),则改程序(动态运行时)选择该派生类的虚函数,称做动态联编
静态联编要确定哪些属性,类型,访问控制符,函数的默认值
如果使用对象名和点成员选择运算符‘.’,引用特定的一个对象来调用虚函数,则被调用的虚函数是在编译时确定的