版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seayoungsjtu/article/details/81604437
Java 核心技术 卷I - 第五章 类的继承
子类
- 子类中可以添加属于子类自己的实例域,方法,或者对父类方法进行覆盖
- 子类无法直接访问属于父类的private实例域,必须通过super关键字和公有接口实现
- 在子类构造器中使用super调用父类构造器,对父类实例域进行初始化
- 如果子类构造器没有显式调用父类的构造器,则将自动调用父类的默认构造器;如果父类没有不带参数的构造器,则会报告错误
- 父类引用变量既可以引用父类对象又可以引用子类对象,并且根据所引用的对象类型选择相应的方法进行执行,称为多态与动态绑定
- private、static和final方法使用静态绑定
- 使用final修饰方法以阻止继承
- 使用强制类型转换将父类转换为子类前,使用instanceof进行检查
- 包含一个或多个抽象方法的类本身必须声明为抽象类;即使一个类不含抽象方法,也可以声明为抽象类
- 抽象类不可以进行实例化,但是可以创建抽象类的对象变量,并指向非抽象子类
- 可以使用protected修饰父类实例域,使之可以被子类访问;此外,protected部分对同一个包内的类都可见
Object类
- Object类是Java中所有类的父类,其定义了一些基本的抽象方法
- equals方法判断两个类是否相等,编写equals函数的方法为:
- 显式参数命名为otherObject
- 检测this和otherObject是否引用同一个对象
- 检测otherObject是否为null,如果为null,返回false
- 比较this与otherObject是否属于同一个类
- 如果equals的语义在每个子类中有所改变,则使用getClass检测;
- 如果equals在所有子类中拥有统一的语义,则使用instanceof检测;
- 将otherObject转换为相应的类类型变量,对所有需要比较的域进行比较
- hashCode方法计算对象的散列值
- toString方法返回表示对象值的字符串
泛型数组
- 为什么要把泛型数组放到这里讲?不是很懂,想看翻书P178
对象包装器与自动打包
- 所有的基本类型都有一个与之对应的类,这些类成为包装器
- 对象包装器类是不可变的,即一旦构造了对象包装器,就不许改变包装在其中的值
- 对象包装器类是final,因此不能构造子类
- 对象包装器可以当做基本类型使用,称为自动打包和自动拆包
- 如果在一个表达式中混合使用Integer和Double类型,则Integer值会拆包,提升为double,再打包为Double
变参方法
- 方法参数数量可变
- 也可以直接将一个Object数组传递给方法
- 例子:public static double max(double… values)
枚举类
- 不知道怎么总结了,翻书P188
反射
- Java特有的性质,一句话总结就是解析类,直接翻书P190,从头看一遍