“失恋了,唉,还没开始就结束了……唉……继续看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-(六)复用类的更多相关文章

  1. 小白学Java:File类

    目录 小白学Java:File类 不同风格的分隔符 绝对与相对路径 File类常用方法 常用构造器 创建方法 判断方法 获取方法 命名方法 删除方法 小白学Java:File类 我们可以知道,存储在程 ...

  2. Java基础 -- 复用类(组合和继承)

    复用类有两种实现方式. 在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称之为组合. 采用继承实现. 一  组合语法 下面创建两个类WaterSource和Sprinkler ...

  3. Java基础—复用类

    复用代码是Java众多引人注目的功能之一. 一般而言,实现代码重用java提供了两种方式:组合以及继承. 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型 ...

  4. 零基础学Java第六节(面向对象二)

    本篇文章是<零基础学Java>专栏的第六篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 继承 创建一个Person类 我们 ...

  5. .net基础学java系列(六)Java基础

    一.废话 .net学java为何一直没入坑?其实大家都知道,语法很相似,就是使用的习惯不同 稍微的语法差异 结构体系不同 IDE不同 类库集不同 各种框架不同 对于我来说,我一直被第三道坎拦住了,所以 ...

  6. 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...

  7. 重学 Java 设计模式:实战享元模式「基于Redis秒杀,提供活动与库存信息查询场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 程序员‍‍的上下文是什么? 很多时候一大部分编程开发的人员都只是关注于功能的实现,只 ...

  8. 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...

  9. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

随机推荐

  1. 在Kibana上格式化字段,更好的在dashboard上展示

    一.为什么要格式化? 接着之前的文章-利用 ELK系统分析Nginx日志并对数据进行可视化展示.下面是http访问的日志,里面有一个字段,bytes 传输的字节,如下图: 绿色框框内选中的就是本次请求 ...

  2. 对象Transform,对属性赋值

    private void ContructRequest(Dictionary<string, string> dictionary, CustomerSearchRequest requ ...

  3. 五、Request

    1.      Request 由于python函数所有变量都没有显示类型声明,特别是函数的输入参数,输出参数,因此在阅读代码时会造成比较大的困扰,比如大部分处理函数都有request输入参数,不同模 ...

  4. 通俗易懂的ListView讲解(Adapter、图、实例)

    2016/4/5 17:22] 之前写listview其实写了很多次,但好像还是模模糊糊的感觉,直到今天准备写tab的时候被告诉说原理有像的地方,于是我就先来分析整理一下listview好了   先来 ...

  5. 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性

    [索引页][源码下载] 精进不休 .NET 4.5 (12) - ADO.NET Entity Framework 6.0 新特性, WCF Data Services 5.6 新特性 作者:weba ...

  6. java之内的工具分享,附带下载链接,方便以后自己寻找

    class反编译工具:http://pan.baidu.com/s/1geYvX5L redis客户端工具:http://pan.baidu.com/s/1eRJ4ThC mysql客户端-[mysq ...

  7. HTML页面放大镜效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. unity3d拓展编辑器MenuItem的使用

    MenuItem是自定义菜单栏显示 比如:[MenuItem("new/My Window")] 这样就会显示菜单new/My Window 把这个放在一个静态方法上就可以了.记住 ...

  9. 泛函编程(22)-泛函数据类型-Monoid In Action

    在上一节我们讨论了Monoid的结合性和恒等值的作用以及Monoid如何与串类元素折叠算法相匹配.不过我们只示范了一下基础类型(primitive type)Monoid实例的应用,所以上一节的讨论目 ...

  10. Ajax基础实例

    前端代码 <script type="text/javascript"> var xmlhttp; function go(url) { xmlhttp=null; i ...