繼承規則
與其他基于類的語言一樣,可以通過繼承組合多個類定義。 類定義可以擴展(或繼承)多個其他類。這些類又可以擴展其他類。
請注意,類不能繼承 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文章
1618瀏覽量
49049 -
數據類型
+關注
關注
0文章
236瀏覽量
13608 -
python
+關注
關注
56文章
4782瀏覽量
84453
發布評論請先 登錄
相關推薦
評論