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