抽象类
抽象类主要是用来约定对于子类必须需要覆写的方法。还可以用其来实现一些对于具体调用方法或步骤的封装。
使用abstract
来定义抽象类和抽象方法。
如果要使用抽象类,必须:
- 抽象类有子类,子类使用extends继承父类。
- 抽象类的子类必须覆该抽象类的全部抽象方法(若子类也是抽象类,则不强制要求)。
抽象类无法自己实例化,即使抽象类中没有任何抽象方法。
在模板设计模式中有用到抽象类,大致思路为:考虑到抽象类的子类必须覆写特点,加上final修饰的东西不能被更改和覆写的特点。在抽象类中写入一些抽象方法,在使用final来修饰一个调用已定义的抽象方法的普通final方法,目的是对于所有属于该抽象类的此final流程,限定了其实现方式。后续修改也会比较简单。
包装类
对于基本数据类型,有时需要将其当做类来处理,此时就需要对其进行包装了。
- 装箱:将基本数据类型转换为其对应的包装数据类型
- 拆箱:将包装数据类型转换为其对应的基本数据类型
JDK1.5后增加了自动装箱与拆箱。
关于包装类型的相等判断上,尽量使用.equals()
方法来判断是否相等
来自阿里巴巴Java开发手册
对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在
IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行
判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,
推荐使用 equals 方法进行判断。
阿里巴巴 Java 开发手册 7 /35