[程序员面试宝典] 私有继承

来源:互联网 发布:物流业数据 编辑:程序博客网 时间:2024/05/28 15:02

Tell me the difference in public inheirt and private inheit.(公有继承和似有继承的区别是什么?)

A.      No difference

(没有区别)

B.      Private inherit will make every member form parent class into private.

(私有继承使父类的所有元素变成私有)

C.   Private inherit will make functions from parent class into private.

(私有继承使父类中的函数转化成私有)

D.      Private inherit make every member from parent not-accessible to sub-class.

(私有继承使父类中所有元素无法与子类联系)


作者解释:

A肯定错。

因为子类只能继承父类的protected public,所以B也是错误的。

C的叙述不全面,而且父类可能有自己的私有方法成员,所以也是错误的。


个人认为应该选B,而非作者给出的D。


(1)私有继承:父类中的公有和保护成员成为子类的私有成员,父类中的私有成员在子类中不可访问

(2)保护继承:父类中的公有和保护成员成为子类的保护成员,父类中的私有成员在子类中不可访问;

(3)公有继承:父类中的公有和保护成员分别成为子类的公有和保护成员,父类的私有成员在子类中不可访问。

(4)一个类的成员对于其对象而言,公有成员可以访问,保护和私有成员,该类的对象是不能访问。

总之,父类private成员属于父类私密的成员,当然不可以给子类访问,protected和public成员可以传给子类,其中public提供公用接口,可以直接通过对象访问。

继承的不同方式只是会影响子类中从父类继承过来的成员权限,如private继承把父类中public成员变为private,但在该子类类域中还是可以访问的,不过如果该子类再派生一次,这些子类中的private成员就不能在这个子类的子类中访问了。

所以D项给出的有问题,B项如果翻译成“私有继承让从父类继承来的所有元素成为私有”这样倒还说的过去。




0 0
原创粉丝点击