继承方式理解的作业
目标: 验证公用继承下基类的公用成员在派生类依然为公用成员
测试用程序代码:
|
出现现象:
输出:
A : public a1 = 10, protected a2 = 20 |
分析:
-
初始化:
-
所有对象 (
d
,d1
,d2
) 的a1
初始化为 10,a2
初始化为 20。d1
和d2
中的b1
初始化为 30。输出:
A : public a1 = 10, protected a2 = 20
B : public a1 = 10, protected a2 = 20
C : public a1 = 10, protected a2 = 20, public b1 = 30
----------------------
-
-
修改
d1.a1
为 100:-
只影响
d1
对象输出:
A : public a1 = 10, protected a2 = 20
B : public a1 = 100, protected a2 = 20
C : public a1 = 10, protected a2 = 20, public b1 = 30
----------------------
-
-
修改
d2.a1
为 200:-
只影响
d2
对象输出:
A : public a1 = 10, protected a2 = 20
B : public a1 = 100, protected a2 = 20
C : public a1 = 200, protected a2 = 20, public b1 = 30
----------------------
-
-
调用
d1.seta2(300)
设置了
d1
对象中的a2
值为 300。输出:
A : public a1 = 10, protected a2 = 20
B : public a1 = 100, protected a2 = 300
C : public a1 = 200, protected a2 = 20, public b1 = 30
---------------------- -
调用
d2.seta2(400)
设置了
d2
对象中的a2
值为 400。输出:
A : public a1 = 10, protected a2 = 20
B : public a1 = 100, protected a2 = 300
C : public a1 = 200, protected a2 = 400, public b1 = 30
----------------------
结论:
- 每个对象维护自己独立的成员变量(包括继承的变量)状态。
- 受保护的成员虽然在类及其子类之间可以访问和修改,但它们的状态是在每个对象级别上独立管理的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 StudyinCAU!
评论