6.2.1 父类和子类

6.2.1 父类和子类

利用继承,可以首先创建一个包括其他许多类的公有的变量和方法的一般类,然后根据需要创建具有特有属性的新类以适用于不同的情况。由于继承,这些新类已经具有了一般类的成员变量和方法,此时只需再设计各个不同类特有的成员变量和方法。

通过继承实现代码重用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。在类的继承中,被继承的类称为父类或超类,由继承而得到的新类称为子类或派生类。

例如,当类Sub1继承类Super时,就表明Sub1是Super的子类,即Super是Sub1的超类。子类从超类继承变量和方法,从而可以共享数据和方法。Sub1又由两部分组成:继承部分和增加部分。继承部分是从Super继承下来的,把Super的成员影射成Sub1的继承成员;增加部分是专为Sub1编写的新代码。这样,子类继承了超类的成员变量和方法,从而可以共享已设计完成的软件模块。不仅这样,超类还可以作为多个子类的超类,如子类Sub2也是超类Super的子类。由于子类Sub1和Sub2有相同的超类,所以它们既有许多相同的性能,也有一些不同的功能。如图6-1所示。

继承映射可以是简单的等同,即Sub1的继承部分完全等同于Super的成员,也可以有比简单等同更丰富的内容。例如,在进行Super到Sub1映射时,程序可以对Super的性质重新命名、重新实现、复制和置空。即子类可以重写超类的方法,及命名与超类同名的成员变量。

继承有两种基本形式:多继承和单继承。如果子类只从一个父类继承,则称为单继承;如果子类从一个以上父类继承,则称为多继承。注意Java不支持多重继承,但它支持“接口”概念,接口使Java获得了多重继承的许多优点,摒弃了相应的缺点。

img200

图6-1 类的继承关系