日期:2014-05-20  浏览次数:20567 次

关于继承的一个问题
两种说法:
1、子类继承基类所有成员,但不能访问继承而来的私有成员
2、子类继承基类非私有成员

这两种说法哪种正确?为什么?

------解决方案--------------------
两种有啥区别?

不都是除了私有成员的其他所有成员么?
------解决方案--------------------
我觉得应该是第一种说法是正确的,但不能说是 "不能访问继承而来的私有成员 ",只是不能对私有成员变量进行直接操作,不能直接调用私有方法而已....一般都通过父类的其他方法实现对父类私有成员的操作,来实现封装...
------解决方案--------------------
我觉得应该是第一种说法是正确的,但不能说是 "不能访问继承而来的私有成员 ",只是不能对私有成员变量进行直接操作,不能直接调用私有方法而已....一般都通过父类的其他方法实现对父类私有成员的操作,来实现封装...

正解。
建议你多看点书再来问问题 呵呵
其实私有成员也是被继承的 只是不能够直接使用 但是父类中的方法是可以使用的 若父类中的方法中使用了这些私有成员 而且这些方法是能被继承的方法 实际上等于间接的操作了私有成员 这就体现了Java的封装——私有成员代表的是操作的过程 而我们只想知道输入跟输出结果。隐藏了中间过程 就叫封装。
------解决方案--------------------
第一种标准答案
------解决方案--------------------
1,深度探索c++对象模型有详细描述
------解决方案--------------------
私有成员不能继承
------解决方案--------------------
其实有一种简单方法看出来,在vc中,定义两个有继承关系的类,不要带虚函数,使用sizeof看一下大小就知道了