0 / 55

已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3;类P和类Q为类O的派生类,其继承方式如下所示:
class P:protected O {…};
class Q:public O {…};
在关于方法F1的描述中正确的是 ()在关于方法F2的描述中正确的是 () 在关于方法F3的描述中正确的是 ()。
 



答案: B|C|B

答案解析:

本题考查的是面向对象程序设计中的继承机制。
继承机制是面向对象技术提供的另一种解决软件复用问题的途径。即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。
 在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
① 基类中成员在派生类中的访问权限
·public:不改变基类中成员的访问权限。
·private:派生类所继承的基类成员的访问权限都改为private。   
·protected:基类中private成员的访问权限不变,其余的都改为protected。
② 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
·基类的private成员:只有基类的成员函数可以访问,派生类不能访问。
·通过private方式继承的基类成员(非private成员):只有派生类的成员函数可以访问,外界以及派生类的派生类都不能访问。
通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private方式产生的)可以访问,外界不能访问。
根据上述规则,类P和Q的成员函数及其访问控制如下表所示:

方法F1是基类O的private成员,虽然类P和Q继承了这个方法,但是只有在基类O的内部才能访问方法F1。因此第(1)空应选择答案B。
方法F2在类P中的访问控制为protected,因此在类P的内部该方法可以被访问,而类P的对象无法访问该方法;由此就可以判断出选项A和B是错误的。由于方法F2在类O和Q中的访问控制均为public,故类O和Q的对象都可以访问该方法。由此可见选项D所给出的“只有在类F内才能访问方法F2”是不正确。第(2)空的正确答案应该为C。
 方法F3在类O、P、Q中的访问控制均为protected,该方法只有在这3个类的内部才能被访问,故第(3)空的正确答案为B。

答案: B|C|B

答案解析:

本题考查的是面向对象程序设计中的继承机制。
继承机制是面向对象技术提供的另一种解决软件复用问题的途径。即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。
 在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
① 基类中成员在派生类中的访问权限
·public:不改变基类中成员的访问权限。
·private:派生类所继承的基类成员的访问权限都改为private。   
·protected:基类中private成员的访问权限不变,其余的都改为protected。
② 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
·基类的private成员:只有基类的成员函数可以访问,派生类不能访问。
·通过private方式继承的基类成员(非private成员):只有派生类的成员函数可以访问,外界以及派生类的派生类都不能访问。
通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private方式产生的)可以访问,外界不能访问。
根据上述规则,类P和Q的成员函数及其访问控制如下表所示:

方法F1是基类O的private成员,虽然类P和Q继承了这个方法,但是只有在基类O的内部才能访问方法F1。因此第(1)空应选择答案B。
方法F2在类P中的访问控制为protected,因此在类P的内部该方法可以被访问,而类P的对象无法访问该方法;由此就可以判断出选项A和B是错误的。由于方法F2在类O和Q中的访问控制均为public,故类O和Q的对象都可以访问该方法。由此可见选项D所给出的“只有在类F内才能访问方法F2”是不正确。第(2)空的正确答案应该为C。
 方法F3在类O、P、Q中的访问控制均为protected,该方法只有在这3个类的内部才能被访问,故第(3)空的正确答案为B。

答案: B|C|B

答案解析:

本题考查的是面向对象程序设计中的继承机制。
继承机制是面向对象技术提供的另一种解决软件复用问题的途径。即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。
 在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
① 基类中成员在派生类中的访问权限
·public:不改变基类中成员的访问权限。
·private:派生类所继承的基类成员的访问权限都改为private。   
·protected:基类中private成员的访问权限不变,其余的都改为protected。
② 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
·基类的private成员:只有基类的成员函数可以访问,派生类不能访问。
·通过private方式继承的基类成员(非private成员):只有派生类的成员函数可以访问,外界以及派生类的派生类都不能访问。
通过protected方式继承的基类成员(非private成员),只有派生类以及该派生类的子类(非private方式产生的)可以访问,外界不能访问。
根据上述规则,类P和Q的成员函数及其访问控制如下表所示:

方法F1是基类O的private成员,虽然类P和Q继承了这个方法,但是只有在基类O的内部才能访问方法F1。因此第(1)空应选择答案B。
方法F2在类P中的访问控制为protected,因此在类P的内部该方法可以被访问,而类P的对象无法访问该方法;由此就可以判断出选项A和B是错误的。由于方法F2在类O和Q中的访问控制均为public,故类O和Q的对象都可以访问该方法。由此可见选项D所给出的“只有在类F内才能访问方法F2”是不正确。第(2)空的正确答案应该为C。
 方法F3在类O、P、Q中的访问控制均为protected,该方法只有在这3个类的内部才能被访问,故第(3)空的正确答案为B。