被继承的类称为超类,继承类称为子类。
继承的主要优点:一旦创建一个超类,就会共享变量和方法。可以创建多个子类。

6.2.1 继承定义

  1. 有其他类派生出的类叫子类(也叫派生类、扩展类或孩子类),派生出子类的类叫做超类(也叫基类或父类)。除了object没有超类外,每个类有且仅有一个直接超类(单继承),没有显示超类时候,每个类都是object的隐式子类。类可以派生子类,子类又可以派生子类等。最顶层的类是object类,这种派生子类是继承所有类的后继,沿着继承链往上可追溯到object。<br />子类继承超类的构造器,但是可以调用超类的构造器。<br />Java支持类型的多重继承,这是类实现多个接口的能力。

6.2.2 子类能做什么

不管子类在哪个包里,他都会继承超类的所有public和protected成员,如果子类和超类在同一个包,他会继承超类的包级私有成员,子类可以使用、替换或隐藏的成员,也可以添加新的成员。

能够使用:

  1. 直接使用继承的字段,如同其他字段一样。
  2. 声明与超类相同的字段名,这样会屏蔽超类的响应字段(不推荐)
  3. 声明不属于超类的新字段
  4. 直接使用继承的方法,如同其他方法一样
  5. 声明与超类中方法签名相同的新的实例方法,这样会覆盖超类的响应方法。
  6. 声明不属于超类的新方法
  7. 编写子类构造器,隐式或说用super关键字调用超类的构造器。

    6.2.3 父类的私有成员和转换对象

  8. 子类不会继承父类的私有成员,但是如果超类声明了public或protected方法访问这些私有字段,子类可以使用这些方法访问这些字段。

  9. 嵌套类可以访问其封闭类的所有私有成员,包括字段和方法,子类继承下来的public或protected嵌套类不能直接访问超类的所有私有成员。

    6.2.4 转换对象:

    转换就是在继承和实现支持的对象类型范围内,用一种类型替代为另一种类型。
    如:
    Object obj = new Sub();    //隐式转换
    Sub sub = (Sub)obj    //显式转换**********/*
    

    6.2.5 子类和父类的方法签名相同情形

    | 类型 | 超类的实例方法 | 超类的静态方法 | | —- | —- | —- | | 子类的实例方法 | 覆盖 | 生成编译时报错 | | 子类的静态方法 | 生成编译时报错 | 屏蔽 |

6.2.6 类的自动继承:

在创建类的时候,所有类自动继承object类,同时继承类中的方法,如“toString();”继承便可以重写。
在创建枚举类的枚举值,自动继承Enum类。