1 继承概念
1)继承是类之间定义的一种重要关系;
2)基本语法:class Child : public Parent1,public Parent2;
3)Parent称基类(父类),child称派生类(子类)
4) 继承方式:public,private,protected.
5)重要说明:
a)子类拥有父类的所有成员变量和成员函数;
b)子类可以拥有父类没有的方法和属性;
c)子类就是一种特殊的父类;
d)子类对象可以当作父类对象使用, 即可以使用父类的成员变量和成员函数;
2 子类的访问控制
1)子类继承了基类的全部成员变量和成员方法(除了构造和析构),但是这些成员的访问属性,在派生过程中是可以调整的。
2)不同的继承方式会改变继承成员的访问属性
a) public继承:父类成员在子类中保持原有访问级别
b) private继承:父类成员在子类中变为private成员
c) protected继承:父类中public成员会变成protected,父类中protected成员仍然为protected,父类中private成员仍然为private。
3)“三看”原则
a)看调用语句,这句话写在子类的内部、外部;
b)看子类如何从父类继承(public、private、protected)
c)看父类中的访问级别(public、private、protected)
4)访问级别设置的原则
a)需要被外界访问的成员直接设置为public
b)能在当前类中访问的成员设置为private
c)只能在当前类和子类中访问的成员设置为protected,protected成员的访问权限介于public和private之间。
3 继承中的构造和析构
1)类型兼容性原则
a)指在需要基类对象的任何地方,都可以使用公有派生类(子类)的对象来替代。
b)子类对象可以当作父类对象使用;
c) 子类对象可以直接赋值给父类对象
d) 子类对象可以直接初始化父类对象
e)父类指针可以直接指向子类对象
f)父类引用可以直接引用子类对象
#include <cstdlib>
#include <iostream>
using namespace std;
class Parent03
{
protected:
const char* name;
public:
Parent03()
{
name = "Parent03";
}
void printP()
{
cout<<"Name: "<<name<<endl;
}
};
class Child03 : public Parent03
{
protected:
in