继承与组合实现软件复用
来源:互联网 发布:淘宝直通车怎么进入 编辑:程序博客网 时间:2024/06/07 02:53
继承与组合:继承是实现软件复用的重要手段,但继承会破坏封装性。组合也是是实现软件复用的方式,且可以提供更好的封装性。
//继承方法实现复用程序代码class Animal{ private void beat() { System.out.println("心脏跳动"); } public void breath() { beat(); System.out.println("呼吸中----"); }}//继承Animal类,直接复用父类的breath方法class Bird extends Animal{ public void fly() { System.out.println("自由的飞翔"); }}//继承Animal类,直接复用父类的breathclass Wolf extends Animal{ public void run() { System.out.println("跑跑跑跑跑"); }}public class InheritTest{ public static void main(String[] args) { Bird b = new Bird(); b.breath();//继承,直接使用父类的方法 b.fly();//自己的方法 Wolf w = new Wolf(); w.breath();//继承,直接使用父类的方法 w.run();//自己的而方法 }}
组合实现类复用
//组合实现复用代码class Animal{ private void beat() { System.out.println("心脏跳动"); } public void breath() { beat(); System.out.println("呼吸中----"); }}//将原来的父类组合到子类,作为子类的一个组合部分class Bird{ private Animal a; public Bird(Animal a) { this.a=a; } public void breath() { //直接复用Animal提供的breath()方法来实现Bird的breath()方法 a.breath(); } public void fly() { System.out.println("自由的飞翔"); }}//将原来的父类组合到子类,作为子类的一个组合部分class Wolf extends Animal{ private Animal a; public Wolf(Animal a) { this.a=a; } //重新定义一个自己的bretath()方法 public void breath() { //直接复用Animal提供的breath()方法来实现Bird的breath()方法 a.breath(); } public void run() { System.out.println("跑跑跑跑跑"); }}public class CompositeTest{ public static void main(String[] args) { //此时需要显示创建被组合的对象 Animal al =new Animal(); Bird b = new Bird(al); b.breath();//继承,直接使用父类的方法 b.fly();//自己的方法 Animal a2 = new Animal(); Wolf w = new Wolf(a2); w.breath();//继承,直接使用父类的方法 w.run();//自己的而方法 }}
0 0
- 继承与组合实现软件复用
- 继承与实现(组合)问题
- 继承与实现(组合)问题
- java 复用代码(组合与继承)
- Java 代码复用(组合与继承)
- 继承的拓展(利用组合来实现复用)
- Go中的用组合实现继承
- 《JAVA继承与多态》利用继承实现MyStack,MyStack是用组合实现的。扩展ArrayLis
- 二十四、继承(一) 代码重用、继承方式、接口继承与实现继承、继承和重定义、继承和组合
- 论组合与继承
- 组合与继承
- 继承与组合
- 组合与继承
- 组合与继承
- 继承与组合
- 组合 继承 与 代理
- 组合与继承
- 组合与继承
- 关于ps切图的一款好用插件(cutterman),亲测好用
- Xcode8 iOS10上关于NSPhotoLibraryUsageDescription、NSCameraUsageDescription、
- javascript学习笔记(廖雪峰javascript教程)
- 利用js实现鼠标切换控件背景图片
- MFC编程学习过程记录
- 继承与组合实现软件复用
- Android自定义Notification并没有那么简单
- 使用AlertController出现:Warning: Attempt to present <UIAlertController: 0x7a961600>
- 堆与堆排序
- 在jsp页面导入jquery多个js文件
- 数组名a和&a的区别
- Shader学习笔记(二)输入结构体与输出结构体
- 检查版本更新
- 初始化块