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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值