Is a 和Has a之间关系
2009-03-17 10:10
183 查看
by http://hi.baidu.com/zhjunxue/blog/item/dc1082817f56a8d09123d981.html
Is a 和Has a之间关系
可以这样理解
汽车是一种交通工具: 汽车 is-a 交通工具
汽车有一个发动机: 汽车 has-a 发动机
is-a 一般是继承关系
has-a 一般是组合关系
或者这样理解;
"has a"关系即组合关系,通过定义类的属性的方式实现的;"is a"关系即继承关系,通过类继承实现
如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。
如果你确定两件对象之间是has-a的关系,那么此时你应该使用组合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。
Is a 和Has a之间关系
可以这样理解
汽车是一种交通工具: 汽车 is-a 交通工具
汽车有一个发动机: 汽车 has-a 发动机
is-a 一般是继承关系
has-a 一般是组合关系
或者这样理解;
"has a"关系即组合关系,通过定义类的属性的方式实现的;"is a"关系即继承关系,通过类继承实现
如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。
如果你确定两件对象之间是has-a的关系,那么此时你应该使用组合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。
相关文章推荐
- Java 继承和聚合/组合的关系以及 Is A,Has A
- Is a 和Has a之间关系
- C++继承体系中Is a 关系 和has a关系
- C++继承体系中Is a 关系 和has a关系
- unicode和utf8之间的关系
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- 【小白话通信】连续分布之间的关系
- JSP与Servlet之间的关系
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- 谈谈程序设计语言、编译器和开发环境之间的关系
- PostgreSQL表空间、数据库、模式、表、用户/角色之间的关系
- Android 中Activity,Window和View之间的关系
- 鸡啄米vc++2010系列39(文档、视图和框架:各对象之间的关系)
- 什么是类,什么是对象,类和对象之间的关系
- Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
- Objective-C(3)对象间的has a关系---复合关系
- Android运行程序在各层架构之间的相互关系
- [PHP]array_map与array_column之间的关系
- 类和类之间的关系