问题
单项选择题
已知3个类R、S和T,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法F3,类S为类R的派生类,类T为类S的派生类,它们的继承方式如下所示。
class S:public R…;
class T:pnvate S…;
在关于类S的描述中正确的是______;在关于类T的描述中正确的是______。
A.类T的对象可以访问F1、F2和F3
B.类T的对象可以访问F2和F3,但不能访问F1
C.类T的成员可以访问F2和F3,但不能访问F1
D.类T的成员不能访问F1、F2和F3
答案
参考答案:C
解析: 类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法F3,类S为类R的派生类,类T为类S的派生类。其中访问控制包括:public(公有派生)、protected(保护派生)和private(私有派生)。
基类中的访问权限在派生类中的继承关系如表4—6所示。
表4-6访问权限的继承表 | ||
派生性质 | 在基类中的访问权限 | 在派生类中的访问权限 |
public (公有派生) | public | public |
protected | protected | |
private | 不可访问 | |
protected (保护派生) | public | protected |
protected | protected | |
private | 不可访问 | |
private (私有派生) | public | private |
protected | private | |
private | 不可访问 |
对于(33)空缺处,①通过继承,F1、F2、F3都成为类T的成员。②由(33)空缺处的分析可知,F1不可以被外界访问,因此选项中凡出现“可以访问F1”都是错误的,据此排除选项A。③由于T采用的是private继承方式,S中的成员都成为T的private成员,即F2、F3都是T的private成员。④私有成员只有本类可以访问,所以T的对象不能访问F2和F3,只有T的成员才能访问它们。因此选项C是正确答案。