注意:派生类中访问基类成员权限跟该成员在基类的声明有关,其继承方式只是将该派生类封装起来,与外部的访问有关系。
继承:一个类自动拥有另一个类的所有成员
父类(基类) 子类(派生类)
子类自动拥有父类所有成员(不包括构造函数、析构函数、赋值运算符重载)
子类中包含两部分成员:1部分从父类继承得到,一部分是子类拓展
虽然发生继承,父类中私有成员在子类中不能直接访问,可以通过公有成员函数间接访问。
重写(覆盖):子类中函数和父类中函数完全相同
如果发生覆盖函数function():
父类对象调用函数,那么父类的成员函数被调用。
子类对象调用函数,那么子类的成员函数被调用。
如果调用被覆盖的父类函数,类名::成员名称
子类中初始化继承自父类的成员变量:调用父类的构造函数来完成初始化(使用初始化列表形式完成初始化)
继承的好处:代码的重用
子类通过函数(set get方法)访问父类的私有变量
protected:受保护
主要使用在继承当中,对于子类来说是public 对于类外来说是private
一般父类成员变量会写成protected访问权限
继承的三种方式:private public protected
private:父类中所有的成员在子类中访问权限全部变为private
影响:1、儿子类private继承父亲类,对孙子类有影响。2、对类外访问产生影响。
protected:父类中public成员在子类中访问权限全部变为protected。父类中protected 、private在子类中访问权限不变
public:父类中所有成员的访问权限不发生任何改变
c++中类之间主要的两种关系
1、组合:has-a 例如圆中有个点 自行车有两个车轮
2、继承 :is-a 大学生是个学生 学生是个人 狗是个动物
共同的作用:代码重用