学习 Flash 中的 ActionScript 2.0 |
|
|
|
| 继承 > 关于继承 | |||
在类,中,您已经看到了可以怎样创建类文件以创建自己的自定义数据类型。学习怎样创建自定义类文件部分向您介绍了怎样将代码从时间轴移入外部文件。通过将代码移入外部文件,将使编辑代码变得更为容易。您既然已熟悉了创建自己的自定义类的基础知识,现在,您将学习一种面向对象的编程 (OOP) 技术,叫做创建子类 或扩展类,通过该技术可以基于现有的类创建新类。
OOP 的好处之一就是可以创建类的子类。子类继承超类 的所有属性和方法。例如,如果扩展 MovieClip 类(或为其创建子类),就是创建一个自定义类来扩展 MovieClip 类。子类继承 MovieClip 类的所有属性和方法。或者还可以创建一组从自定义超类扩展的类。例如,Lettuce 类可以扩展自 Vegetable 超类。
子类一般定义一些可以在应用程序中使用的更多方法和属性,因此说它是对超类的扩展。子类还可以重写(自己定义)从超类继承的方法。如果某个子类重写了从其超类继承的方法,则您不能再在该子类中访问对应的超类定义。以上规则的唯一例外就是,在子类的构造函数内部可以使用 super 语句调用超类的构造函数。有关重写的更多信息,请参见重写方法和属性。
例如,您可以创建一个 Mammal 类,定义所有哺乳动物共有的某些属性和行为。然后,您可以创建一个扩展 Mammal 类的 Cat 子类。使用子类可以重复使用代码,从而您不必重新创建两个类共有的任何代码,而只需对现有类加以扩展。另一个子类(比如 Siamese 类)可以再次扩展 Cat 类,依此类推。在复杂的应用程序中,确定类的层次结构是设计过程中的大部头工作。
继承和创建子类在较大应用程序中非常有用,因为使用它们可创建一系列可以共享功能的相关类。例如,可以创建一个 Employee 类来定义公司内一般员工的基本方法和属性。然后可以创建一个叫做 Contractor 的新类,它扩展了 Employee 类并继承了其所有的方法和属性。Contractor 类可以添加自己特定的方法和属性,还可以重写在 Employee 超类中定义的方法和属性。然后可以创建一个叫做 Manager 的新类,该类也扩展了 Employee 类并定义了更多方法和属性,如,hire()、fire()、raise() 和 promote()。甚至还可以扩展子类(如 Manager)和创建一个叫做 Director 的新类,后者也可以添加新方法或重写现有的方法。
每次扩展现有类时,新类都将继承子类的所有当前方法和属性。如果每个类不相关,则必须在每一个独立类文件中编写每种方法和属性,即使在同级类中的功能相同时也是如此。如果相似的逻辑在多个文件中改变,则不仅要花费太多的时间进行编码,而且还要调试应用程序和维护项目。
在 ActionScript 中,可以使用 extends 关键字在一个类和它的超类之间建立继承关系或者扩展一个接口。有关使用 extends 关键字的更多信息,请参见关于在 Flash 中编写子类和关于编写子类。有关 extends 关键字的其它信息,请参见"ActionScript 2.0 语言参考"中的 extends 语句。
|
|
|
|