在我们学习面向对象程序设计的时候,那么这个继承成员访问控制机制您必须对其有深入的了解,达到熟练掌握的目的;要不也许这点知识你不过关,你对这点知识还抱着半信半疑的感觉,那么你一旦碰到这个问题,你的第一个感觉就是“烦”。那么我们就深入浅出的来跟大家说说这个面向对象程序设计里边的继承这方面的知识。希望对大家有些许的帮助。
首先无论你的功底怎么样,咱们还是先来了解一下这三种访问控制:
public:公有成员说明列表;
protected:受保护成员说明列表;
private:私有成员说明列表;
我们来看一个表,我还是觉得用表来说明一些问题,大家应该更容易的理解:
这个表就对私有、保护、公有的成员他的一个访问控制情况做了一个分类,我们从这个表里边应该能理解到这么游戏诶知识点:
1、类自身来访问私有、保护、。公有的函数以及数据是畅通无阻的,都能访问,我们用图来说明一下:
我们假设在这个类里边,public有一个函数F1(),protected有一个函数F2(),private有一个函数F3(),那么我们的这个时候有一个public F4(),那么我们在的F4(){}是可以调用F1、F2、F3的。这个就跟咱们那个类自身的那一列就对上号了。还是比较容易理解的吧。
2、派生类:比如我们一个类继承自另外一个类,比如继承这个基类,我们来看图:
那么我们这个派生类是不能访问私有成员的,图中就是不能访问F3,不能访问父类的私有成员。这里也反映了一个问题,就是一个类的私有成员是不被继承的;class2虽然继承于class类,但是只能继承公有的成员和受保护的成员保护,而私有成员是不能访问到的,因为没继承过去。
3、其他类:比如class3,不是我们这个类的子类,是一个其他的类,这个类当中,如果想用到我们class当中的成员,那只能用公有成员。就是:
我们另外还需要值得注意的是:
类的对象的访问权限,相当于其他类。我们看一段代码来理解一下:
我们这么来理解,我们这里就相当于一个外部的类class3对class1进行访问。我觉得这么来理解会容易很多。
我们看一下在继承过程中,加控制,会对成员有什么影响:我们来看一下这个表:
表分三列,基类成员访问控制(我们在基类当中函数是定义成公有的,还是保护的,还是私有的)、继承访问控制(在继承的时候,用的什么样的继承关键字)、继承的类(子类,在子类当中对于父类当中定义的的函数进行访问的时候,访问控制情况如何),我们能看到:
1、我们看访问控制public:
我们很容易的看的出来,私有成员是无法被继承到的;我们可以把继承理解为一种拷贝机制,生产一个子类,子类是一个父类的拷贝,我们在拷贝的过程当中,把私有成员丢掉了,没有拷贝过去,不允许被拷贝过来。
2、继承访问控制:protected
我们看的出来,这个继承访问控制若是protected或者private的时候,那么在派生类中的访问控制也就立马变成了protected和private,当然我们还是不要忘了private是无法继承过来的。
继承关系,没有那么的复杂,以上有不对的地方,请大家指出,感激不尽。希望能帮助大家一起理解这个继承~