给你讲一个简单的例子吧:线段是一个基类,它派生出一个矩形类,这样线段是父类,私有数据成员就可以是长度;而矩形是子类,它是线段组成的(就是说它继承了线段的特点),它有自己的新的私有数据成员周长和面积,同时有线段的私有成员:长度(但是不能直接访问,可以通过父类的成员函数访问:比如可以父类的成员函数为设置长度和取长度,这样就能访问父类的私有成员)。至于说为什么子类为什么不能直接访问父类的私有成员:既然能访问私有成员那还有必要分2个类吗?直接当成一个类就可以了!这样父类就没有存在的意义了,拿例子说就是线段就没有存在的意义了。但是线段还可以派生出其他的类啊:可以是圆,三角形。。。。
类的派生可以建立具有共同关键特征的对象家族,从而实现代码的重用,这种继承和派生的机制对于已有程序的发展和改进是极为有利的。
继承就相当于,老爸把自己的钱和权,做人做人做事的方法传给了儿子,但是老爸某些私有物品,比如名字啥等却传不给儿子。
这个只是语言上的语法限制,也是可以访问的,不过要用点手段,只要一门语言有直接访问内存的功能就没有不能真正访问不到的数据。
继承在于多个类之间可以共享他们共同的东西(继承基类),并具体化自己特有的功能(如重载或自己添加特有的成员)。继承了父类的私有成员,这些就变成了子类的私有成员,子类不能访问父类的私有成员,是指子类自己的实现不能访问继承自父类的私有成员(基类的私有成员由继承自基类自己的实现来控制),如果想修改这点,基类protected成员是可以被派生类的实现访问的,同时又能像private一样实现封装。
“子类继承父类和把父类的成员变量包含到自己的类中到底有啥区别呀?”
回答:这里面有一点点区别。比如说如果子类创建了自己的私有成员那么子类是可以通过自己的成员函数来访问自己的私有成员的,但是子类却不可以通过自己的成员函数来访问继承自父类的私有成员,这就说明通过继承过来的成员与子类本身具有的成员是有一些区别至于为什么会这样,我也有点疑问。
因为c++有规定类本身自己的成员函数是可以访问自己的成员变量的,所以继承的本质并不仅仅是包含和关联那么简单