C++ is-a, was-a, has-a,holds-a
来源:互联网 发布:剑三捏脸正太数据 编辑:程序博客网 时间:2024/06/10 09:30
C++ is-a was-a has-a holds-a
flyfish 2015-1-28
is-a :公有继承(public inheritance)一般称为两个对象是之间是 is-a 关系
was-a: 私有继承称两个对象是 was-a 关系
has-a:has-a关系描述一个类中有另一个类型的实例
holds-a:描述的是一个类中保存了指向另一个类型的指针或者引用is-a :Liskov替换原则(Liskov Substitution Principle)对is-a 做出了更具有限制性的定义
子类对象能够替换其基类对象被使用。适用于base classes身上的每一件事情一定也适用于derived classes身上,
因为每一个derived class对象也都是一个base class对象。
其中is-a和was-a是继承关系。has-a和holds-a 是组合关系.
尽量使用组合关系的原因
继承使设计的耦合度过于紧密,当一个类继承另一个类时,不管什么样的权限继承,子类都可以获得基类所有的public和protected成员的访问权限
使用组合时该类仅仅与其他类的public成员耦合。当使用holds-a关系时 不需要引用其他类的头文件只需要使用 前置声明(forward declaration)。
0 0
- C++ is-a, was-a, has-a,holds-a
- is-a has-a
- is-a&has-a
- is-a, is-like-a, has-a
- is-a, is-like-a, has-a
- is-a VS has-a
- is-a And has-a
- is-a 与 has-a
- “is a” 和”has a“
- Is -A 与Has - A
- HAS-A和IS--A
- UML has a/ is a
- “is a” 和”has a“
- is-a和has-a
- java is-a has-a
- is-a 和 has-a
- is-A && as-A && has-A
- is-a、 has-a、 use-a
- Java 本地缓存的实现(转)
- [Leetcode]Valid Sudoku
- Linux中select poll和epoll的区别
- Nginx源码分析1--------编写Nginx扩展模块
- http://user.qzone.qq.com/2427147/2
- C++ is-a, was-a, has-a,holds-a
- Android Activity.startActivity流程简介
- Eclipse搭建Android环境失败的解决方案
- 深入浅出MyBatis-快速入门
- sys.path sys.argv
- Android ActivityThread(主线程或UI线程)简介
- [CSS3教程]相对单位rem详解
- 定时任务:Java中Timer和TimerTask的使用
- android 编译boost动态库