已知3个类O、P和Q,类O中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为
已知3个类O、P和Q,类O中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类;类Q为类P的派生类,它们的继承方式如下所示:
class P:public O{…};
class Q:private P{…};在关于类P的描述中正确的是(43);在关于类Q的描述中正确的是(44)。
A.类P的对象可以访问F1,但不能访问F2
B.类P的对象可以访问F2,但不能访问F1
C.类P的对象既可以访问F1,也可以访问F2
D.类P的对象既不能访问F1,也不能访问F2
解析:继承机制是面向对象技术提供的另一种解决软件复用问题的途径,即在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的功能重新定义。
在继承关系中存在两个类:基类和派生类。继承的方式有3种:public、private和 protected。在不同的继承方式下,派生类对基类成员的访问权限不同,外界对派生类成员的能见度也不同。
. 基类中成员在派生类中的访问权限
◆ public继承方式:不改变基类中成员的访问权限。
◆ private继承方式:派生类所继承的基类成员的访问权限都改为private。
◆ protected继承方式:基类中private成员的访问权限不变,其余的都改为
protected。
. 派生类所继承的基类成员的外部能见度(外界对基类成员的访问权限)
◆ 基类的private成员,只有基类的成员函数可以访问,派生类不能访问。
◆ 通过private方式继承的基类成员(非private成员),只有派生类的成员函
数可以访问,外界以及派生类的派生类都不能访问。
◆ 通过protected方式继承的基类成员(非private成员),只有派生类以及该派
生类的子类(非private方式产生的)可以访问,外界不能访问。
(43)、(44)考查的是外界(P的对象和Q的对象)对派生类中继承的基类成员的访问权限。解答此题的关键在于确定基类中成员在派生类中的访问权限,尤其是类Q,它是经过两次继承得到的,Q的直接基类是P,而P又是由O派生而来的。
先分析空(43)。首先应注意到类O中有一个私有方法F1。类的私有成员只有在本类中才能访问,因此凡是出现“可以访问F1”的选项都是错误的,这样选项A、C就可以排除了。其次,P是采用public继承方式从O派生而来,那么类O中的所有公有成员都是P的公有成员,在程序中的任何地方都可以访问一个类的公有成员。因此只有选项 B是正确的。
空(44)可以在空(43)的基础上进行。通过继承,F1、F2、F3都成为类Q的成
员。由空(43)已经得到:F1不可以被外界访问,因此凡是出现“可以访问P1”的选项都是错误的,这样A就被排除了。由于Q采用的是pfivate继承方式,P中的成员都成为Q的private成员,即F2、F3都是Q的private成员。私有成员只有本类可以访问,所以Q的对象不能访问F2和F3,只有Q的成员才能访问它们。因此选项C是正确答案。
甲乙二人在沙地上行走,他们在沙地上留下的脚印大小不同(受力面积S甲>S乙),深浅相同,他们对沙地的 物理 2020-06-12 …
如图,已知O(0,0),E(-3,0),F(3,0),圆F:(x-3)2+y2=5.动点P满足|P 其他 2020-06-12 …
图钉帽的面积为图钉尖的面积的2000倍,若用力F把图钉压入木块,则钉帽与钉尖的压力与压强的大小关系 物理 2020-06-26 …
图钉帽的面积为图钉尖的面积的2000倍,若用力F把图钉压入木块,则钉帽与钉尖的压力与压强的大小关系 物理 2020-06-26 …
如图,已知O(0,0),E(-,0),F(,0),圆F:(x-)2+y2=5.动点P满足|PE|+ 数学 2020-08-03 …
若规定一种对应关系f(k),使其满足:f(k)=(p,q)且q-p=k,若f(k)=(p,q),则f 数学 2020-12-01 …
填空:汽车以恒定加速度a启动,由公式p=Fv和F-f=ma知,由a恒定,所以F恒定,汽车做运动,而随 物理 2020-12-22 …
P=W/t和P=Fv这两个公式的使用是有条件、有区别的:前者是指发生在时间t内的平均功率;而后者,若 物理 2021-01-11 …
在资金时间价值计算时,i和n给定,下列等式中正确的有().A.(F/A,i,n)=[(P/F,i,n 数学 2021-01-14 …
1、在资金时间价值计算时,i和n给定,下列等式中正确的有?为什么?1、A(F/A,i,n)=[(P/ 数学 2021-01-14 …