继承规则
与其他基于类的语言一样,可以通过继承组合多个类定义。 类定义可以扩展(或继承)多个其他类。这些类又可以扩展其他类。
请注意,类不能继承 Python
中定义的类(即 .py
文件中包含的类定义),反之亦然。
以下小节提供了中类继承的基本规则。
继承顺序
使用以下继承顺序规则:
- 默认情况下,如果在多个超类中定义了给定名称的类成员,则子类将从超类列表中最左边的类中获取定义。
- 如果类定义包含
Inheritance = right
,则子类从超类列表中最右侧的类中获取定义。
由于历史原因,大多数类都包含 Inheritance = right
。
主要的超类
任何扩展其他类的类都有一个主要超类。
无论类使用哪种继承顺序,主超类都是第一个,从左到右阅读。
对于任何类级编译器关键字,给定类使用其主超类中指定的值。
对于持久化类来说,主超类尤其重要。
最具体的类型类Most-Specific Type Class
尽管一个对象可以是属于多个类extent
的实例(例如各种超类的extent
),但它始终具有最特定的类型类 (MSTC
)。当该对象是该类的实例但不是该类的任何子类的实例时,类是该对象的最具体类型。
重写方法
类从其一个或多个超类继承方法(类方法和实例方法),可以覆盖这些方法。如果这样做,必须确保方法定义中的签名与要重写的方法的签名匹配。子类方法的每个参数必须使用与超类方法的参数相同的数据类型,或者该数据类型的子类。但是,子类中的方法可以指定超类中未定义的其他参数。
可以使用 Python
方法覆盖以 ObjectScript
编写的方法,反之亦然,只要方法签名匹配即可。
在子类的方法中,可以引用它在超类中重写的方法。要在 ObjectScript
中执行此操作,请使用 ##super()
语法。例如:
//overrides method inherited from a superclass
Method MyMethod() [ Language = objectscript ]
{
//execute MyMethod as implemented in the superclass
do ##super()
//do more things....
}
注意:##super
不区分大小写。
-
编译器
+关注
关注
1文章
1634浏览量
49128 -
数据类型
+关注
关注
0文章
236浏览量
13623 -
python
+关注
关注
56文章
4796浏览量
84664
发布评论请先 登录
相关推荐
评论