Java基础学习——代码复用
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基础学习——代码复用相关推荐
- Java基础学习(9)
Java基础学习 一.常用方法(API) 1.1 Math 1.2 System 1.3 Runtime 1. 4 .object 1.5 Objects 1.6 BigInteger BigInte ...
- JAVA基础学习--面向对象
JAVA基础学习–面向对象 1.面向对象与面向过程: 面向过程:就代表从头到位,每一步都需要我们来完成,例如洗衣服,首先收拾脏衣服.接上水.到洗衣液.搓.倒水.拧干.晾晒.每一步都需要我们来完成. 面 ...
- java基础学习-4
Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...
- java基础学习整理(一)
java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- Java中大数据数组,Java基础学习笔记之数组详解
摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...
- java基础学安卓开发_Android开发学习路线之Java基础学习
原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...
- Java基础学习:尚硅谷项目三 开发团队调度软件
Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
最新文章
- 来了!微服务中的事务处理
- Leangoo领歌敏捷项目管理工具新增测试管理功能
- 用Php设置Iptables,如何使用CSF添加自定义iptables规则
- C# 之 用NPOI类库操作Excel
- 单线程下的生产者--消费者模式详解,wait和sleep的区别
- ADO.net商机题目
- Go语言初探gRPC服务
- python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
- 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
- 150904 高速公路 ccf
- “阿里云核心竞争力”峰会首日中奖小伙伴名单公布!机械键盘等豪礼下午继续放出!...
- 递归查找数组的最大值
- 大小端详解(判断+转换)
- chardet.detect()
- java能解决数学题目吗_Java竟然可以做数学应用题?
- 1197 山区建小学
- Java开发教程入门!数据库事务深入分析
- 实验........
- 电脑网页打开巨慢但是网络正常
- 删除对象属性的三种方法