单选题 已知两个类R、S,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法 F3,类S为类R的派生类。它们的继承方式如下所示
class S:public R{…);
以下关于类S的描述中,正确的是{{U}} {{U}} {{/U}} {{/U}}。
  • A.类S的对象可以访问F1,但不能访问F2
  • B.类S的对象可以访问F2,但不能访问F1
  • C.类S的对象既可以访问F1,也可以访问F2
  • D.类S的对象既不能访问F1,也不能访问F2
【正确答案】 B
【答案解析】[解析] 已知两个类R、S,类R中定义了一个私有方法F1和一个公有方法F2:类S中定义了一个公有方法F3,类S为类R的派生类。其中,访问控制包括:public(公有派生)、protected (保护派生)和private(私有派生)。基类中的访问权限在派生类中的继承关系如表3-7所示。
{{B}}表3-7 访问权限的继承表{{/B}}
派生性质
在基类中的访问权限
在派生类中的访问权限
Public(公有派生)
Public
Public
Protected
Protected
Private
不可访问
Protected(保护派生)
Public
Protected
Protected
Protected
Private
不可访问
Private(私有派生)
Public
Private
Protected
Private
Private
不可访问
由于类R中定义了一个私有方法F1,类的私有成员只有在本类中才能访问,因此选项中凡出现“可以访问F1”都是错误的,据此排除选项A、C。
S是采用public继承方式从类R中派生而来,那么类R中的所有公有成员都是类S的公有成员,在程序中的任何位置均可被访问,因此选项B是正确答案。