继承和组合
来源:互联网 发布:微型滚珠丝杠行业数据 编辑:程序博客网 时间:2024/05/11 15:05
转载出处,很不错的文章收藏学习http://blog.csdn.net/zhuanshenfanhua123/article/details/14119759
1.相同点:二者都是实现类重用的重要方式。
2.不同点:继承会破坏封装性。
例:
- class A
- {
- public void fun(){}
- public void breath(){}
- }
- class B extends A
- {
- public void funb(){}
- }
- class C extends A
- {
- public void func(){}
- }
使用组合的方法如下:
- class A
- {
- public void fun(){}
- public void breath(){}
- }
- class B
- {
- private A a;//将原来的父类嵌入原来的子类中,作为子类的一部分
- public void funb(){}
- public B(A a)
- {this.a=a;}
- public void breath(){a.breath();}//实现复用}
- }
- class C {
- private A a;
- public C(A a)
- {this.a=a;}
- public void breath(){a.breath();}
- }
3.何时用继承,何时用组合?
继承是对已有的类进行改造,父类中主要是包含通用的属性和方法,获得的子类是一个特殊版本的类,将具有明显继承关系的两个类使用继承,比如动物和狗,狗不是由动物组成的,而狗可以继承动物的通用属性和方法,则使用继承比较合适。
如果为人和腿的话,则明显腿是人的组成部分,使用组合比较合适。
0 0
- 继承和组合
- 继承和组合
- 组合和继承
- 继承和组合
- 组合和继承
- 继承和组合
- java 组合和继承
- c++ 继承和组合
- 浅谈继承和组合
- 浅谈继承和组合
- 继承和组合
- 继承和组合
- 继承和组合
- 继承和组合
- 继承和组合
- 继承和组合
- 继承和组合
- 组合和继承
- 20160618常规赛总结
- 一行 Python 实现并行化 — 日常多线程操作的新思路
- 伙伴系统
- php截取字符串常用方法
- 剑指offer——二叉树的镜像
- 继承和组合
- Java千百问_01基本概念(012)_Socket是什么
- 线程与进程共享的资源种类
- 读写其他应用程序的sharedpreferences
- STM32学习经验(补充)
- Windows 2008 账户组及权限
- java数据结构(三)——队列
- zf框架下smatry模板tpl输出xls文件
- copvalue from wrapper type to primitive type