大家一起和snailren学java-(六)复用类
“失恋了,唉,还没开始就结束了……唉……继续看java”
今天又是周末,我们来看看java的复用机制是什么情况。大家知道,代码复用非常实用,这项特性是java的一个重要的部分。那java用什么来实现的复用呢?是组合和继承。当然还有代理机制,但是不是很常用,因此我们暂时不考虑。
什么是“组合”呢?就是把不同的类的实例放到一个新的类里面,组合起来。那“继承”,就是通过extends关键字进行的继承。组合更强调的是使用某种类的功能,而继承则是对某种类的定制化。因此相对于继承,我们在进行设计的时候,尽量使用组合。因为组合更加灵活,只有在不得不继承的时候再继承。
(小tips:在每个类中都可以加main方法,这样比较方便单元调试。因此一个文件中有多个类可以有多个main)
对于继承,一般将基类的数据定义为private,将方法定义为public。关于基类和本身对象的初始化这就不讨论了。同时,我们知道java的GC不可控,因此像以前说的,如果我们有定义其他的内存申请方式,那么我们需要自己去做特殊的清理工作。我们可以用finalize,但是不建议用这个,原因以前说过。我们可以用try/finally来实现,因为finally一定会执行,可以在其中调用清理工作的方法,按照对象的申请顺序逆序进行清理。(小tips:若想覆盖一个基类方法,而不是重载,为了确保是覆盖,可在方法前加@override)
这里还有一个以前没有见到的定义“向上转型”。什么是向上转型,就是在调用基类的方法的地方可以用子类。因为子类就是基类的一种。
最后说说final吧。我们在使用final的时候,主要用在三个方面,数据、方法、类。在对数据用final的时候,如果是对基本数据类型用final,那么那个数据就不会变。如果是对对象用final,那那个引用指向的对象不能变,但是对象本身是可以变的,这点需要注意。对方法用 final,意思是不允许覆盖。以前说对方法用覆盖,有内联机制,可以提高效率,但是现在这不是重点了,主要还是用禁止覆盖为目的。对类用final,那就是说这个类不能被继承,所有的都为final。
大家一起和snailren学java-(六)复用类的更多相关文章
- 小白学Java:File类
目录 小白学Java:File类 不同风格的分隔符 绝对与相对路径 File类常用方法 常用构造器 创建方法 判断方法 获取方法 命名方法 删除方法 小白学Java:File类 我们可以知道,存储在程 ...
- Java基础 -- 复用类(组合和继承)
复用类有两种实现方式. 在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称之为组合. 采用继承实现. 一 组合语法 下面创建两个类WaterSource和Sprinkler ...
- Java基础—复用类
复用代码是Java众多引人注目的功能之一. 一般而言,实现代码重用java提供了两种方式:组合以及继承. 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型 ...
- 零基础学Java第六节(面向对象二)
本篇文章是<零基础学Java>专栏的第六篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 继承 创建一个Person类 我们 ...
- .net基础学java系列(六)Java基础
一.废话 .net学java为何一直没入坑?其实大家都知道,语法很相似,就是使用的习惯不同 稍微的语法差异 结构体系不同 IDE不同 类库集不同 各种框架不同 对于我来说,我一直被第三道坎拦住了,所以 ...
- 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...
- 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...
- 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
随机推荐
- 创意欣赏:20幅字体排版(Typography)素描
通常我们都只关注最终的作品,但其实幕后还有很多的过程,其中一个是素描.素描用来表达最初思想观念的原型.有时客户需要一个独特的品牌新LOGO或字体,这时先绘制在纸上是比较方便的,之后扫描到 Photos ...
- 远程方法调用(RMI)原理与示例
RMI介绍 远程方法调用(RMI)顾名思义是一台机器上的程序调用另一台机器上的方法.这样可以大致知道RMI是用来干什么的,但是这种理解还不太确切.RMI是Java支撑分布式系统的基石,例如著名的EJB ...
- JS中 escape, encodeURI 和 encodeURIComponent的区别
为避免Url字符串在传递过程中的乱码,我们一般需要对字符串进行处理. 在Javascript中实现此功能的全局对象有3个,分别是:escape(), encodeURI() 和 encodeURI ...
- wcf服务返回json
private static void CreateErrorReply(OperationContext operationContext, string key, HttpStatusCode s ...
- python内置模块(1)
Python的模块在其它语言中通常称为库或类库,也就是lib.它是编程语言的第三级封装,第四级则是包,也就是模块的打包组合,而前两级分别是函数和类.封装的好处,自然不用多言,高内聚,松耦合,减少代码重 ...
- Velocity魔法堂系列三:模板与宿主环境通信
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- [ORM] Entity Framework(2) CodeFirst进阶
在上一节中,实现了CodeFirst快速入门.但是很多与数据库的细节还无法自定义.以及使用EF过程中,需要注意的事项. 在本节中,会涉及到以下 EF中的连接字符串 EF的对象状态 延迟加载,为什么需要 ...
- [团队项目]sprint3 & 团队贡献分
希望各组认真准备,拿出最好的阵容最好的状态,展示一学期的学习与工作成果. 各组注意完成sprint3的博客,写上团队贡献分. 将演示PPT(如果有)和代码上传到github. 截止日期:2016.6. ...
- 2013 - Lost connection to MySQL server at 'reading initial communication packet' 错误解决
一.操作与状态 当使用MySQL客户端连接localhost本地数据库时,连接不上,报错.(使用Tomcat连接数据库时可以连接上,但需要很长的请求时间.) 二.原因与解决办法 关于这个问题网上的解决 ...
- ok6410 android driver(8)
In the past, we know how to create and run a simple character device driver on pc, goldfish and ok64 ...