Java 核心技术 卷I - 第五章 类的继承

版权声明:本文为博主原创文章,未经博主允许不得转载。 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,从头看一遍

猜你喜欢

转载自blog.csdn.net/seayoungsjtu/article/details/81604437