在面向对象的编程中,子类可以继承另一个类(称作超类)的属性和方法。若要在两个类中创建这种关系,应使用 class
语句的 extends
子句。若要指定超类,请使用以下语法:
class SubClass extends SuperClass {}
在 SubClass
中指定的类将继承超类定义的所有属性和方法。例如,可以创建一个 Mammal 类,定义所有哺乳动物所共有的属性和方法。若要创建 Mammal 类的一个变体,例如一个
Marsupial 类,则应扩展 Mammal 类(即,创建 Mammal 类的一个子类)。
class Marsupial extends Mammal {}
子类将继承超类的所有属性和方法,包括使用 private
关键字声明的任何私有属性或方法。(有关私有变量的更多信息,请参见控制成员访问。)
您可以扩展您自己的自定义类,也可以扩展任何内置动作脚本类,例如,XML、Sound 或
MovieClip 类。扩展内置动作脚本类时,您的自定义类将继承该内置类的所有方法和属性。
例如,以下代码定义 JukeBox 类,它扩展内置的 Sound 类。它定义一个名为 songList
的数组和一个名为 playSong()
的方法。此方法播放歌曲并调用 loadSound()
方法(继承自 Sound 类)。
class JukeBox extends Sound { var songList:Array = new Array("beethoven.mp3", "bach.mp3", "mozart.mp3"); function playSong(songID:Number) { this.loadSound(songList[songID]); } }
如果您没有将对 super()
的调用放入子类的构造函数中,则编译器将自动生成对其不含参数的直接超类的构造函数的调用作为该函数的第一个语句。如果超类没有构造函数,则编译器将创建一个空构造函数,然后生成从子类对该构造函数的调用。但是,如果超类采用其定义中的参数,则必须在子类中创建构造函数,并用必需的参数调用超类。
多重继承(即,从多个类继承)是不允许的。但是,如果使用单个 extends
语句,则类便可以有效地从多个类继承:
// 不允许 class C extends A, B {} // 允许 class B extends A {} class C extends B {}
您还可以使用 extends
关键字创建接口的子类:
interface iA extends interface iB {}