复用类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复用类相关的知识,希望对你有一定的参考价值。

  1. 组合语法 将对象引用置于新类中即可.初始化组合对象的方式有
    • 在定义处,可以保证在构造器执行前初始化
    • 构造器中
    • 惰性初始化,只在要使用时初始化
    • 使用实例初始化
  2. 继承
    继承时会自动获得父类所有的域和方法

基类初始化,基类构造器会在子类构造器调用之前调用,若是基类不存在无参数默认构造器,则需要通过super显式调用基类构造器

  1. 代理,使用方法暴露子对象的接口

确保正确清理

将清理方法放在final中,最好编写自己的清理方法,不要使用finalize()

名称屏蔽

子类会拥有所有父类的重载函数,切都可以调用

向上转型

子类可以向上转型变为基类,因为子类的接口一定大于等于基类

final关键字

指定数据不可变,若是修饰引用则表明引用指向的对象不能变,但是对象自身可以被修改

static的final常量只会在类加载时初始化一次

非static的final会在每次对象创建时初始化.

final的基本类型常量为编译时常量 会被编译器优化.

final参数指参数不可更改.空白final,可以不指定初始值,但一定要在使用前初始化,使其与对象绑定,同类的不同对象拥有不同的值.

final方法指 方法锁定不能被覆盖.java初期也会使用final方法进行效率优化,因为早期java实现中可能会将final方法的调用转为内嵌调用,但后来已经被废除,因为可能方法太大导致内嵌调用会带来效率下降的问题,新的hotspot技术会负责效率问题.

final类不可被继承,所有的方法隐式指定为final.

初始化及类的加载

java类的代码只有在初次使用时才会加载

类的初始化过程: 当运行某个类时,试图访问它的main方法,当发现有基类时会先加载基类.一直加载到最根部的基类,然后从根开始进行static初始化.到达本身后开始进行对象的创建,先是将对象内存全部设置为0,然后递归调用基类构造器,最后进行构造器剩余部分.

总结

继承复用的是接口,组合复用的是旧类.

除非你需要新的类可以向上转型,否则一般应优先使用组合.

每个类都应该有特定用途,不应该太大,如果一个类很大就要考虑将该类分成多个小类.

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





以上是关于复用类的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记—复用类

《Java编程思想》读书笔记之第7章-复用类

Java编程思想(七复用类)

大家一起和snailren学java-复用类

TJI读书笔记10-复用类

复用类@1