JScript 修饰符可更改类、接口或者类或接口的成员的行为和可见性。修饰符可以在定义类和接口时使用,但它们通常并不是必需的。
可见性修饰符
可见性修饰符对外部代码如何访问类、接口以及它们的成员加以限制。可以使用一些限制条件,通过避免调用专用的内部方法和字段,来促进建立良好的面向对象的编程习惯。
默认情况下,可访问某个类的任何代码都可以访问该类的任何成员。使用可见性修饰符可以有选择地阻止外部代码访问特定的类成员,只允许同一个包的类访问成员,或只允许派生类访问类成员。
可见性修饰符不能应用于全局函数或变量。只有 protected 和 internal 可见性修饰符可以在一起使用。
继承修饰符
继承修饰符控制派生类的方法和属性如何重写基类中的方法和属性。通过使用此控制,可以对派生类的方法是否将重写您所创建的类进行管理。
默认情况下,派生类的方法将重写基类方法,除非在派生类中使用了版本安全的 hide 属性。该属性可阻止重写。使用继承修饰符使您能控制某些特定的方法总是可以重写还是永远不能重写。
在某些条件下,可能需要确保不重写某种基类方法。例如,如果在包内定义了一个类,就可以使用 final 修饰符确保派生类将不能更改此类的方法和属性。
另一方面,您也可能希望让您的类重写某些方法。例如,可以创建一个类来提供一些基本功能,但对某些方法则使用 abstract 修饰符。实现这些抽象方法是派生类编写器的任务。
版本安全修饰符也管理重写,但它是从派生类一边(而不是从基类一边)来管理的。只有当版本安全修饰符所要重写的基类方法没有继承修饰符时,版本安全修饰符才有效果。
不能将两种继承修饰符组合在一起,也不能将继承修饰符与 static 修饰符组合在一起。
版本安全修饰符
版本安全修饰符控制可重写基类中的方法的派生类方法。通过使用这种控制,您就可以管理您所创建的类是否将重写基类中的方法。
默认情况下,派生类的方法将重写基类中的方法,虽然派生类的定义中的继承修饰符也可以阻止重写。使用版本安全修饰符使您能控制某些特定的方法是否会被重写。
在某些条件下,可能需要确保不重写基类方法。例如,可以扩展一个类以更改基类方法的行为。如果不希望这些方法在基类中被重写,就可以使用 hide 修饰符对这些方法作出声明。
另一方面,您也可能想重写某些基类方法。例如,您可能想更改类的某些方法而不修改该类。通过扩展该类并使用 override 修饰符作为方法声明,可以使新方法重写基类。
版本安全修饰符的成功使用取决于基类方法的声明是否使用了继承修饰符。不能重写用 final 修饰符标记的基类方法;也不能隐藏用 abstract 修饰符标记的基类方法,除非为抽象的基类方法提供了显式实现。
不能将两种版本安全修饰符组合在一起,也不能将版本安全修饰符与 static 修饰符组合在一起。当您以版本安全模式运行时,对每个重写基类方法的方法,仅可使用一个版本安全修饰符。
expando 修饰符
expando 修饰符能使得基于类的对象的行为就像 JScript 对象一样。可以将方法和属性动态添加到 expando 对象。有关更多信息,请参见基于原型的对象。
可以独立于其他修饰符使用 expando 修饰符。
修饰符 | 有效范围 | 含义 |
---|---|---|
类或方法 |
用于类,给类提供一个默认的和带索引的属性,该属性能够存储和检索动态属性 (expando)。用于方法,指示它是一个 expando 对象的构造函数。 |
static 修饰符
static 修饰符指明类的成员属于类本身而不属于类的实例。因此,类特定的数据和方法可能不与任何特定的实例相关联。
不能将 static 修饰符与任何版本安全修饰符或继承修饰符组合。
修饰符 | 有效范围 | 含义 |
---|---|---|
方法、属性、字段或类 |
用于方法,指示可以在没有类实例的情况下调用它。用于属性和字段,指定所有实例共享一个副本。不应将 static 修饰符与 static 语句相混淆,后者表示初始化类的代码。 |