美文网首页
第5章 继承

第5章 继承

作者: KaveeDJ | 来源:发表于2019-06-06 21:49 被阅读0次

    5.1 类、超类、子类

    5.1.1 定义子类

    5.1.2 覆盖方法

    • 子类不能直接访问父类的私有域,必须借助于get方法

    5.1.3 子类构造器

    • 使用super调用构造器的语句必须是子类构造器的第一条语句

    5.1.4 继承层次

    5.1.5 多态

    • 父类不能调用子类特有的方法

    5.1.6 理解方法调用

    5.1.7 阻止继承:final类和方法

    5.1.8 强制类型转换

    • 在将超类转换成子类之前,应该使用instanceof进行检查

    5.1.9 抽象类

    • 抽象方法,是一个重要的概念
    • 有抽象方法的类,称为抽象类
    • 抽象方法,即不提供实现,由子类实现的方法
    • 类即使不含抽象方法,也可以将类声明为抽象类,抽象类不能被实例化。

    5.1.10 受保护访问

    • 不要使用protected域
    • 可以使用protected方法
    • protected方法的范例,clone方法
    • protected对子类和本包可见

    5.2 Object:所有类的超类

    • 由于在Java中,每个类都是由Object类扩展而来的,所以,熟悉这个类提供的所有服务十分重要。

    5.2.1 equals方法

    • 默认比较对象地址值
    • 我们实际上需要重写equals方法,比较对象的内容,一般都会重写equals方法
    • Objects.equals方法可以防备两个对象同时为空,底层再调用equals

    5.2.2 相等测试与继承

    • Java语言规范要求equals方法具有下面的特性
      1 自反性
      2 对称性
      3 传递性
      4 一致性
      5 非空性
    • 使用==比较基本类型域,使用equals比较对象域

    5.2.3 hashCode方法

    • Object类中默认的散列码为对象的存储地址
    • 两个相等的对象,返回相等的散列码
    • 经常与equals方法一起使用

    5.2.4 toString方法

    • 它用于返回表示对象值的字符串
    • println直接调用toString方法
    • Object类默认的toString方法是类名加哈希码

    5.3 泛型数组列表

    • 在Java的老版本中,程序员使用Vector类实现动态数组。不过,ArrayList类更加有效,没有任何理由一定要使用Vector类

    5.3.1 访问数组列表元素

    • ArrayList底层由数组实现,有自动扩容的功能

    5.3.2 类型化与原始数组列表的兼容性

    5.4 对象包装器与自动装箱

    • 自动装箱规范要求-128~127之间的基本类型被包装到固定对象中,可以共享

    5.5 参数数量可变的方法

    • 可变参数就是数组,可变参数必须是最后一个参数

    5.6 枚举类

    5.7 反射

    • 能够分析类能力的程序称为反射(reflective)
    • 主要使用人员是工具构造者,而不是应用程序员

    5.7.1 Class类

    • Class类记录类运行时的信息

    5.7.2 捕获异常

    • 编译时异常,运行时异常

    5.7.3 利用反射分析类的能力

    5.7.4 在运行时使用反射分析对象

    5.7.5 使用反射编写泛型数组代码

    5.7.6 调用任意方法

    5.8 继承的设计技巧

    • 不要用protected域,因为这破坏了封装性,子类可以访问父类的域
    • 同一个包中,也可以访问protected域
    • protected方法可以用,让子类重写
    • 除非所有继承的方法都有意义,否则不要使用继承

    相关文章

      网友评论

          本文标题:第5章 继承

          本文链接:https://www.haomeiwen.com/subject/zjpexctx.html