首页
登录 | 注册

继承总结

继承的一般形式:

    class <派生类名>:<派生方式><基类名>

    {

        派生类成员声明;

    }

    其中派生方式为private私有继承、public公有继承、protected保护继承

    访问控制,看如下表:

继承总结

从上表中可以看出:

1、基类中的私有成员在派生类中是隐藏的,只能在基类内部访问;

2、派生类中的成员不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员;

3、派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍为公有成员和保护成员;

4、派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;

5、派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中则仍为保护成员。

 

一、公有继承。

    1、虽然派生类以公有的方式继承了基类,但并不是说派生类就可以访问基类的私有成员,基类无论怎样被继承,其私有成员对基类而言仍然保持私有性;

    2、在派生类中声明的名字如果与基类中声明的名字相同,则派生类中的名字起支配作用。也就是说,若在派生类的成员函数中直接使用该名字的话,该名字是指在派生类中声明的名字。如果要使用基类中的名字,则在改名字前加“基类名::”。

 

二、私有继承

    基类的公有成员和保护乘员在派生类中成为私有成员,它们能被派生类的成员函数直接访问,但不能被类外函数访问,也不能在类外通过派生类的对象访问。基类的私有成员派生类仍不能被访问。

 

三、保护继承

    1、无论是公有派生还是私有派生,派生类都不能访问它的基类的私有成员,要想访问,只能通过调用基类成员函数的方式,但是对于频繁访问基类私有成员的派生类而言,这种方式不便。

    2、若为公有派生,则基类中的保护成员在派生类中也为保护成员,可被派生类直接访问,但不能被外部函数直接访问,外部函数只能通过派生类的对象间接访问它们

    3、若为私有派生,则基类中的保护成员在派生类中成为私有成员,派生类可以直接访问它们,但外部函数或在类外通过派生类的对象都不能访问它们。

 

    派生类直接访问基类私有成员,必须使用基类的接口,实现的方法如下两种:

    * 在基类的声明中增加保护成员,将基类中提供给派生类访问的私有成员定义为保护成员

    * 将需要访问基类私有成员的派生类成员函数声明为友元。



2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.009 s.
京ICP备10005923号