

7. 两个类是指针相连的,生命不同步
8. 左边只是对外接口,实现在右边做。当左边需要动作都要用到右边的类的函数来服务
9. 左边将来也可以指向不同的实现类,右边变动不影响左边,也就不影响客户端。(又称编译防火墙)
10. 通常在聚合类中定义被聚合对象指针的数组、链表等容器。


注意:依赖关系和关联关系没有生命周期,复合关系和聚合关系是有生命周期的。
让某个对象获得另一个对象的属性和方法就是继承。
被继承的类叫做基类(父类),继承的类叫派生类(子类),在派生类类名后面加:继承方式 基类。
通过继承关系,子类可以使用父类的成员。如果子类和父类有同名的成员,默认使用子类的成员,如果想要使用父类的成员,需要在成员名前加上类名::用于显式的指定区分。
当派生类对象被创建时,首先会调用基类的构造函数,然后调用派生类自己的构造函数。
构造函数的调用顺序是按照继承的顺序,从基类依次往下调用。即先调用最上层的基类,再依次往下调用。
析构函数的调用顺序与构造函数的调用顺序相反,先调用派生类自己的析构函数,再依次回溯调用基类的析构函数,直至最上层的基类的析构函数被调用。
实现继承
使用基类的属性和方法而无需额外编码能力
接口继承
仅使用属性和方法名称,子类必须提供实现能力
可视继承
子窗体(类)使用基窗体(类)的外观和实现代码的能力
① 在继承体系中基类和派生类都有独立的作用域。
② 子类和父类中有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义。(在子类成员函数中,可以使用 基类::基类成员 显示访问)
③ 需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏。
④ 注意在实际中在继承体系里面最好不要定义同名的成员。
一个派生类有多个基类就叫做多重继承
可通过虚继承解决菱形继承问题(多次继承)
注意:防止继承可使用final关键字
这就是我大概的理解,关于类之间的关系中横向关系跟23种设计模式有很大的联系,而纵向关系更是C++面向对象的三大特征之一。