2-1为什么继承
1.Worker继承自Person,新增方法work()和成员m_iSalary:
继承1.png// 继承
class Worker : public Person
{
public:
void work();
int m_iSalary;
}
2.继承方式
(1)公有继承
class A : public B
Tips:
可以通过本类中的public下的成员函数访问protected和private中的数据成员;
不涉及继承的时候protected和private是一样的;
公有继承的时候,原类中的public放到新类的public中,原类的protected放到新类的protected中,而原类的privat将会放到新类的不可见位置,是禁止访问的;
在公有继承中:基类的Proteced类似于非继承形式下的private。 可以通过成员函数进行调用Protected中的数据成员。基类中的Private不会继承到派生类的Private下。注意:他继承到了一个隐藏的地方。即派生类不能访问基类的Private。
Table:
基类成员访问属性 | 继承方式 | 派生类成员访问属性 |
---|---|---|
private成员 | public | 无法访问 |
protected成员 | public | protected |
public成员 | public | public |
(2)保护继承
class A : protectd B
Tips:
保护继承的时候,基类中的protected和public都将作为派生类的protected,基类中的private将会在派生类中不可见,无法访问
Table:
基类成员访问属性 | 继承方式 | 派生类成员访问属性 |
---|---|---|
private成员 | protected | 无法访问 |
protected成员 | protected | protected |
public成员 | protected | protected |
(3)私有继承
class A : private B
Tips:
私有继承的时候,基类中的protected和public都将作为派生类的private,基类中的private将会在派生类中不可见,无法访问
私有继承是has a(是一种包含关系)
Table:
基类成员访问属性 | 继承方式 | 派生类成员访问属性 |
---|---|---|
private成员 | private | 无法访问 |
protected成员 | private | private |
public成员 | private | private |
网友评论