繼承規(guī)則
與其他基于類的語(yǔ)言一樣,可以通過(guò)繼承組合多個(gè)類定義。 類定義可以擴(kuò)展(或繼承)多個(gè)其他類。這些類又可以擴(kuò)展其他類。
請(qǐng)注意,類不能繼承 Python
中定義的類(即 .py
文件中包含的類定義),反之亦然。
以下小節(jié)提供了中類繼承的基本規(guī)則。
繼承順序
使用以下繼承順序規(guī)則:
- 默認(rèn)情況下,如果在多個(gè)超類中定義了給定名稱的類成員,則子類將從超類列表中最左邊的類中獲取定義。
- 如果類定義包含
Inheritance = right
,則子類從超類列表中最右側(cè)的類中獲取定義。
由于歷史原因,大多數(shù)類都包含 Inheritance = right
。
主要的超類
任何擴(kuò)展其他類的類都有一個(gè)主要超類。
無(wú)論類使用哪種繼承順序,主超類都是第一個(gè),從左到右閱讀。
對(duì)于任何類級(jí)編譯器關(guān)鍵字,給定類使用其主超類中指定的值。
對(duì)于持久化類來(lái)說(shuō),主超類尤其重要。
最具體的類型類Most-Specific Type Class
盡管一個(gè)對(duì)象可以是屬于多個(gè)類extent
的實(shí)例(例如各種超類的extent
),但它始終具有最特定的類型類 (MSTC
)。當(dāng)該對(duì)象是該類的實(shí)例但不是該類的任何子類的實(shí)例時(shí),類是該對(duì)象的最具體類型。
重寫方法
類從其一個(gè)或多個(gè)超類繼承方法(類方法和實(shí)例方法),可以覆蓋這些方法。如果這樣做,必須確保方法定義中的簽名與要重寫的方法的簽名匹配。子類方法的每個(gè)參數(shù)必須使用與超類方法的參數(shù)相同的數(shù)據(jù)類型,或者該數(shù)據(jù)類型的子類。但是,子類中的方法可以指定超類中未定義的其他參數(shù)。
可以使用 Python
方法覆蓋以 ObjectScript
編寫的方法,反之亦然,只要方法簽名匹配即可。
在子類的方法中,可以引用它在超類中重寫的方法。要在 ObjectScript
中執(zhí)行此操作,請(qǐng)使用 ##super()
語(yǔ)法。例如:
//overrides method inherited from a superclass
Method MyMethod() [ Language = objectscript ]
{
//execute MyMethod as implemented in the superclass
do ##super()
//do more things....
}
注意:##super
不區(qū)分大小寫。
-
編譯器
+關(guān)注
關(guān)注
1文章
1645瀏覽量
49471 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13694 -
python
+關(guān)注
關(guān)注
56文章
4813瀏覽量
85316
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Python多重繼承使用方法
Python與C#對(duì)比
如何使用Python的類? 優(yōu)勢(shì)有哪些?
Java類的繼承與派生

評(píng)論