一、继承与派生 两者是同一概念,只不过是不同角度的描述,A继承B,B派生A。继承保持类的原有属性,派生则拓展了属性。(后文出现A是派生类,B是基类)
继承不是基类中的成员在派生类中复制代码这么简单,意思就是B中有private成员name,A中不是相当于也在private中写了个name,而是相当于增加了一个过程,如果你直接写在A中name,定义一个对象相当于直接访问,而继承就是对象->A->B这么一个过程,增加了一个手续。
继承可以理解为一种权限的给予。
继承,吸收除了构造和析构函数之外的全部成员。
二、类的三种成员
公有类型成员
在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
对象可以直接访问。
私有类型成员
在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
对象不能直接访问,如果要访问,需要在类中定义公有函数来操作。
保护类型成员
与private类似,其差别表现在继承与派生时对派生类的影响不同
三、继承方式
无论那种继承,都是所有东西都继承过来,不同的是继承的东西是以什么样的方式继承。
访问控制熟悉是指派生类对于继承过来的属性能否直接访问,访问权限是指能访问哪些成员
派生类的对象对于自己派生出新的成员参考(二),而对于基类的public和protected成员可以直接访问,对于private成员需要派生类定义公有成员函数去调用基类中的公有成员函数,而这个基类中的公有成员函数可以对其私有成员进行操作。
所有继承过来的成员都需要自己在派生类中写成员函数来进行操作,如果是基类中的public和protected成员,成员函数能直接访问,但如果是基类private成员,则需要调用基类中的公有成员函数(也就是接口)来操作。
无论选什么继承方式
共同点:派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;任何基类的private成员都不能直接访问,都需要基类提供接口。
不同点:public继承,派生类的对象能访问基类的public成员。而其他继承方式派生类的对象不能访直接问任何继承过来的成员。
我也不知道访问控制和访问权限的区别或者只是浅显的知道,但是实际编程中我个人认为明白访问权限,并且知道如何操作就行了。
原文:https://www.cnblogs.com/working-in-heart/p/12094224.html