利用继承和组合实现软件复用
利用继承实现软件复用
1 class Animal 2 { 3 private String type; 4 public Animal(String type){ 5 this.type = type; 6 } 7 public void beat(){ 8 System.out.println(this.getType()+"心脏在不停跳动。。。"); 9 } 10 public void breath(){ 11 beat(); 12 System.out.println(this.getType()+"呼吸中。。。"); 13 } 14 public String getType(){ 15 return this.type; 16 } 17 } 18 class Bird extends Animal 19 { 20 public Bird(String type){ 21 super(type); 22 } 23 public void fly(){ 24 System.out.println(this.getType()+"在天空自由自在的飞翔"); 25 } 26 } 27 class Wolf extends Animal 28 { 29 public Wolf(String type){ 30 super(type); 31 } 32 public void run(){ 33 System.out.println(this.getType()+"在天空自由自在的飞翔"); 34 } 35 } 36 public class AnimalTest 37 { 38 public static void main(String[] args) 39 { 40 Bird b = new Bird("鸟"); 41 b.breath(); 42 Wolf c = new Wolf("狼"); 43 c.breath(); 44 } 45 }
利用组合实现软件复用
2 class Animal //该类里的方法或Filed应是复用对象共同拥有的 3 { 4 private String type; 5 public Animal(String type){ 6 this.type = type; 7 } 8 public void beat(){ 9 System.out.println(this.getType()+"心脏在不停跳动。。。"); 10 } 11 public void breath(){ 12 beat(); 13 System.out.println(this.getType()+"呼吸中。。。"); 14 } 15 public String getType(){ 16 return this.type; 17 } 18 } 19 class Bird 20 { 21 private Animal a; 22 public Bird(Animal a){ 23 this.a = a; //this.a = a = a1 = Animal@1db9742 24 } 26 public void breath(){ 27 a.breath(); //a1.bteath(); 28 } 29 public void fly(){ 30 System.out.println((this.a).getType()+"在天空自由自在的飞翔"); 31 } 32 } 33 class Wolf 34 { 35 private Animal a; 36 public Wolf(Animal a){ 37 this.a = a; //this.a = a = a2 = Animal@106d69c 38 } 39 public void breath(){ 40 a.breath(); 41 } 42 public void run(){ 43 System.out.println((this.a).getType()+"在陆地上自由奔跑"); 44 } 46 } 47 public class CompositeTest 48 { 49 public static void main(String[] args) 50 { 51 Animal a1 = new Animal("鸟"); 52 Bird b = new Bird(a1); 53 b.breath(); 54 b.fly(); 55 Animal a2 = new Animal("狼"); 56 Wolf c = new Wolf(a2); 57 c.breath(); 58 c.run(); 59 } 60 }
转载于:https://www.cnblogs.com/manliu/p/3986751.html
利用继承和组合实现软件复用相关推荐
- python 类继承和组合_python类与对象的组合与继承
1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承 ...
- C++编程进阶6(public继承与组合、private继承、多重继承、处理模板基类内的名称、如何避免模板代码膨胀)
二十一.public继承与组合 public继承是是子类对象is a基类对象的关系,比如QT中的所有组件类都要继承QObject,所以所有的QT组件都是一个QObject. 而组合是has a(包含) ...
- Scala入门到精通——第九节 继承与组合
主要内容 类的继承 构造函数执行顺序 方法重写 匿名类 多态与动态绑定 组合与继承的使用 1 类的继承 下类的代码演示了Scala类的继承 //Person类 class Person(name:St ...
- 【设计模式之美】<Reading Notes>继承与组合
继承缺点 继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题.虽然继承有诸多作用,但继承层次过深.过复杂,也会影响到代码的可维护性.在这种情况下,我们应该尽量少用, ...
- C++ 继承与组合的区别
C++ 程序开发中,设计孤立的类比较容易,设计相互关联的类却比较难,这其中会涉及两个概念,一个是继承(Inheritance),一个是组合(Composition).因为二者有一定的相似性,往往令程序 ...
- 【Java SE】继承;组合;向上转型;动态绑定;方法重写;静态绑定;多态;抽象类;接口;
面向对象编程 文章目录 1. 包 1.1 导入包中的类 1.2 静态导入 1.3 将类放到包中 1.4 包的访问权限控制 1.5 常见的系统包 2. 继承 2.1 语法规则 2.2 protected ...
- java 继承 模型_java – 画布形状模型的继承与组合?
对于以下模型,您更喜欢继承还是组合: >我想在画布上绘制对象,每个对象代表一个数据对象 >将其视为状态机图:椭圆表示状态,线表示它们之间的连接/转换.对象表示本身永远不会改变,即状态将始终 ...
- Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态
一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---重构代码,利用继承多态 1. 主界面截图如下: 2. ...
- 详细分析如何在java代码中使用继承和组合
文章目录 继承与组合 何时在Java中使用继承 何时在Java中使用组合 继承与组成:两个例子 用Java继承重写方法 Java不具有多重继承 使用super访问父类方法 构造函数与继承一起使用 类型 ...
最新文章
- [转] Android系统版本号和Android API level对应表
- linux系统编码修改
- HALCON示例程序measure_ring.hdev齿轮齿宽度测量
- java 类 null_深入理解java中的null“类型”
- webstorm 10.0.4 注册码
- jdbc 链接不了mysql_JDBC链接Mysql失败
- Oracle 10g升级之--PSU 升级(续)
- 一些常用SQL语句大全
- 操作系统概念(Operating System Concepts Ninth Edition恐龙书)阅读
- ReportMachine如何导出PDF文档?
- linux串行提交脚本,如何保证shell脚本串行执行
- 进出队C语言不用链表,C语言面试题总汇简要
- api日常总结:前端常用js函数和CSS常用技巧
- 推动线下网吧转型 京东Game+ CEST总决赛圆满落幕
- CMS简数采集数据发布到迅睿CMS教程
- 运维累了:该故障自愈出场了
- 重置并,修改MySql密码
- 计算机图形学05:中点BH算法对任意斜率的直线扫描转换方法
- 生成HTTP响应报文
- 计算机网什么是cih病毒,全球十大计算机病毒排名(7-9)
热门文章
- 相机中影响成像质量的参数
- leetcode —— 面试题 16.19. 水域大小
- OpenCV--读取图像中任意点的像素值,并显示坐标
- FFMPEG针对视频操作的基本命令
- 相机标定(Camera calibration)
- 计算机桌面文件夹排序,电脑桌面文件整理前后对照
- python中event_Python Event实现线程通信
- 实车采集的数据重建场景_避障、探测、采样......华理这套系统让无人小车“身手非凡”...
- dhcp软件_tp-link无线路由器软件如何升级【教程图解】
- latex中report目录_在 LaTeX 中将不编号的章节列入目录