1.什么是复用

复用指的是代码的复用,即将编写的类通过组合或继承的方式重新利用

2.复用的方式

  • 组合(has-a 关系)

  • 继承(is-a 关系)

3.组合

1.什么是组合?

在新类中引入现有的类,组合是代码复用使用频率最高的方式

比如,我们有轮子、玻璃、引擎、坐垫等等,我们就可以简单组装成一辆车。轮子、玻璃、引擎、坐垫我们可以作为现有类,将其通过组合方式构建出一个新的类——

2.简单代码展示

  • 现有类:Engine

/*** @author panyq* @since: 2022/3/13 16:43* #Description Engine*/
public class Engine {//region 构造器
​public Engine() {System.out.println("氢氧燃料电池");}
​//endregion
}
  • 现有类:Wheel

/*** @author panyq* @since: 2022/3/13 16:33* #Description Wheel*/
public class Wheel {//reign 变量
​/*** 开始使用时间*/private static Long startTime = System.currentTimeMillis();
​//endregion
​//region 方法
​/*** 计算车轮使用的时间*/public void runningTime(){System.out.println(System.currentTimeMillis() - startTime);}
​//endregion
}

现有类:Window

/*** @author panyq* @since: 2022/3/13 16:42* #Description Window*/
public class Window {//region 构造器
​public Window(int windowFlag) {this.windowFlag = windowFlag;}
​//endregion
​//region 变量
​/*** 窗户标识*/private int windowFlag;
​//endregion
​//region 方法
​/*** 输出窗户编号*/public void windowFlag(){System.out.println("这是第" + windowFlag + "块窗户");}
​//endregion
}

新类:将原有的类:Engine,Wheel,Window在新类中引入

/*** @author panyq* @since: 2022/3/13 16:48* #Description Car*/
public class Car {//region 构造器
​public Car() {wheel = new Wheel();engine = new Engine();for (int i = 0; i < 4; i++) {windows[i] = new Window(i+1);}System.out.println("这是第" + count++ + "辆车" );}
​//endregion
​//region 成员变量
​/*** 车辆数量统计*/private static int count = 1;/*** 轮子*/private Wheel wheel;/*** 引擎*/private Engine engine;/*** 窗户*/private Window[] windows = new Window[4];
​
​//endregion
​//region 方法
​/*** 查看窗户标识*/public void installWindows(){for (int i = 0; i < 4; i++) {windows[i].windowFlag();}
​}
​/*** 查看轮子的使用时间*/public void wheelRunningTime(){wheel.runningTime();}
​//endregion
​public static void main(String[] args) {Car car = new Car();car.installWindows();car.wheelRunningTime();}
}
最终输出结果:
氢氧燃料电池
这是第1辆车
这是第1块窗户
这是第2块窗户
这是第3块窗户
这是第4块窗户
1

组合的特点:根据程序的需要通过引入不同的对象组装成新的对象来满足需求

4.继承

1.什么是继承?

从已有类拓展成新类,一般在java中通过extends关键字(继承类或接口继承接口)或implement关键字(继承接口)声明

比如,我们普通的车都是四轮前驱,现在出了一种越野型奥迪车,它前后都有高级引擎,配备了高级减震器。这些特性都是普通车所没有的,同样是行驶,它们表现出的:奥迪车明显速度更快,加速更猛

2.简单代码展示

现有类:BaseCar

/*** @author panyq* @since: 2022/3/13 18:19* #Description BaseCar*/
public class BaseCar {//region 构造器
​public BaseCar() {System.out.println("这是普通车");}
​//endregion
}

新类:AudiCar通过extends关键字继承了BaseCar

/*** @author panyq* @since: 2022/3/13 18:18* #Description AudiCar*/
public class AudiCar extends BaseCar {//region 构造器
​public AudiCar() {System.out.println("这是前后驱动配备高级缓震的奥迪车");}
​//endregionpublic static void main(String[] args) {AudiCar audiCar = new AudiCar();}
}

输出结果:

这是普通车

这是前后驱动配备高级缓震的奥迪车

继承的特点:具备现有类的所有信息(private域除外),并且可以根据需要进行拓展

Java基础学习——代码复用相关推荐

  1. Java基础学习(9)

    Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...

  2. JAVA基础学习--面向对象

    JAVA基础学习–面向对象 1.面向对象与面向过程: 面向过程:就代表从头到位,每一步都需要我们来完成,例如洗衣服,首先收拾脏衣服.接上水.到洗衣液.搓.倒水.拧干.晾晒.每一步都需要我们来完成. 面 ...

  3. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  4. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  5. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  6. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  7. java基础学安卓开发_Android开发学习路线之Java基础学习

    原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...

  8. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

  9. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

最新文章

  1. 来了!微服务中的事务处理
  2. Leangoo领歌敏捷项目管理工具新增测试管理功能
  3. 用Php设置Iptables,如何使用CSF添加自定义iptables规则
  4. C# 之 用NPOI类库操作Excel
  5. 单线程下的生产者--消费者模式详解,wait和sleep的区别
  6. ADO.net商机题目
  7. Go语言初探gRPC服务
  8. python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
  9. 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
  10. 150904 高速公路 ccf
  11. “阿里云核心竞争力”峰会首日中奖小伙伴名单公布!机械键盘等豪礼下午继续放出!...
  12. 递归查找数组的最大值
  13. 大小端详解(判断+转换)
  14. chardet.detect()
  15. java能解决数学题目吗_Java竟然可以做数学应用题?
  16. 1197 山区建小学
  17. Java开发教程入门!数据库事务深入分析
  18. 实验........
  19. 电脑网页打开巨慢但是网络正常
  20. 删除对象属性的三种方法

热门文章

  1. 真正理解Mysql的四种隔离级别
  2. werkzeug 详解
  3. 美妆界“Costco”估值5亿背后 :货源存疑,价格并不扛打
  4. 电脑永久删除的文件怎么恢复?轻松恢复没问题!
  5. Limo机器人教程-底盘运动学分析4
  6. 单点登录之CAS原理和实现(转载)
  7. Oracle oder by 的汉字排序
  8. CTR预估的几种方式
  9. MongoDB面试题(史上最全面试题,精心整理100家互联网企业,面试必过)
  10. Ptrace 详解 转载