C++间接继承
假设类 C 继承自类 B,类 B 继承自类 A。那么类 C 除了能够继承 B 类的成员函数和成员变量外,同样也能继承自 A 类的所有成员。因此,继承既可以是直接继承,也可以是间接继承。
【例 1】
从表中我们可以看出,类 C 不仅包含 B 类的成员,同时还包含了类 A 中的成员,在表格中我们都这些成员都统一归为继承自类 B,而实际上我们也可以将成员变量 x 及成员函数 setx() 和 getx() 视为间接继承自类 A。当然,间接继承所得的成员变量和成员函数,其属性遵循直接继承时的规则。
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
【例 1】
class A
{
public:
int getx(){return x;}
void setx(int a){x = a;}
private:
int x;
};
class B : public A
{
public:
int gety(){return y;}
void sety(int b){y = b;}
private:
int y;
};
class C : public B
{
public:
int getz(){return z;}
void setz(int c){z = c;}
private:
int z;
};
在本例中,先定义了类 A,然后通过派生定义了类 B,之后再派生出类 C。B 类和 C 类都有自己新增的成员变量和成员函数。下面我们将以表格的形式列出类 A、B 和 C 的所有成员和成员变量。| 类 | 成员 | 属性 | 来源 |
|---|---|---|---|
| A | x | private | 自身 |
| getx | public | 自身 | |
| setx | public | 自身 | |
| B | x | 不可访问 | 继承自类 A |
| setx | public | 继承自类 A | |
| getx | public | 继承自类 A | |
| y | private | 类 B 新增 | |
| sety | public | 类 B 新增 | |
| gety | public | 类 B 新增 | |
| C | x | 不可访问 | 继承自类 B |
| setx | public | 继承自类 B | |
| getx | public | 继承自类 B | |
| y | 不可访问 | 继承自类 B | |
| sety | public | 继承自类 B | |
| gety | public | 继承自类 B | |
| z | private | 类 C 新增 | |
| setz | public | 类 C 新增 | |
| getz | public | 类 C 新增 |
从表中我们可以看出,类 C 不仅包含 B 类的成员,同时还包含了类 A 中的成员,在表格中我们都这些成员都统一归为继承自类 B,而实际上我们也可以将成员变量 x 及成员函数 setx() 和 getx() 视为间接继承自类 A。当然,间接继承所得的成员变量和成员函数,其属性遵循直接继承时的规则。
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。