已知3个类R、S和T,类R中定义了一个私有方法F1和一个公有方法F2,类S中定义了一个公有方法F3,类S为类R的派生类,类T为类S的派生类,它们的继承方式如下所示: class S:public R{…}; class T:private

admin2009-02-15  40

问题 已知3个类R、S和T,类R中定义了一个私有方法F1和一个公有方法F2,类S中定义了一个公有方法F3,类S为类R的派生类,类T为类S的派生类,它们的继承方式如下所示:
   class S:public  R{…};
   class T:private  S{…};
   在关于类S的描述中正确的是(18),在关于类T的描述中正确的是(19)。

选项 A、类T的对象可以访问F1、F2和F3
B、类T的对象可以访问F2和F3,但不能访问F1
C、类T的成员可以访问F2和F3,但不能访问F1
D、类T的成员不能访问F1、F2和F3

答案C

解析 继承机制是面向对象技术提供的一种解决软件复用问题的途径。其访问控制包括public(公有派生)、protected(保护派生)和private(私有派生)。基类中的访问权限在基类和派生类中的继承关系如表6-8所示。

对于(18)空缺处,①由于类R中定义了一个私有方法n。类的私有成员只有在本类中才能访问,因此选项中凡出现“可以访问F1”都是错误的,据此排除选项A、C。
   ②S是采用public继承方式从R派生而来的,那么类R中的所有公有成员都是S的公有成员,在程序中的任何位置均可被访问,因此选项B是正确答案。
   对于(19)空缺处,①通过继承,F1、F2、F3都成为类T的成员。
   ②由(18)空缺处的分析可知,F1不可以被外界访问,因此选项中凡出现“可以访问 F1”都是错误的,据此排除选项A。
   ③由于T采用的是private继承方式,S中的成员都成为T的private成员,即F2、F3都是T的private成员。
   ④私有成员只有本类可以访问,所以T的对象不能访问F2和F3,只有T的成员才能访问它们。因此选项C是正确答案。
转载请注明原文地址:https://jikaoti.com/ti/TxI7FFFM
0

相关试题推荐
最新回复(0)